新浪博客

2026年03月24日

2026-03-24 09:31阅读:
LOGO编程题:毕业照
2026年03月24日
这是2010年厦门市教育局厦门市科协官方举办的信息学竞赛的复赛题。
对于任何一个人来说,往昔毕业照中所留下的温馨画面,都是人生中有意义的瞬间,同时也见证了伟大祖国日趋繁荣昌盛的那一个时刻。
这个题目是典型的“静态作图题”,要求画面中诸多元素有序对齐并整体居中排列。弄懂了这个简单编程的思路及编程技法,将会掌握类似的一大批作图题的编程精髓。
题目:
毕业照(BYZ)题源:2010厦门复赛


小学毕业了同学们想拍张毕业照,请你编程序让海龟画出如下所示的毕业照示意图。
要求:
(1)外框为双线框,最外框
尺寸为250X580;
(2)照片内共34人,排成4排,最底下一排10人,以上每排递减1人;
(3)头形用圆表示,直径为20。排与排之间均匀错开来,整幅图以中轴对称;
(4)照片的最下方有一行字,内容可由你决定(不能处理汉字的电脑就用拼音字母代替),但要求居中。其他尺寸由你根据例图比例大小自行决定;
(5)执行过程BYZ,则输出:


2026年03月24日


根据后面的编程画出来的“毕业照”
2026年03月24日

编程分析:
1. 这算是一个比较简单的程序。除了外框的尺寸和人头像的直径20外,都要自己把握尺寸数据。因此编程中需要多次反复调整尺寸。
2026年03月24日


2. 这里面人像的尺寸大小十分关键。大了排不下、小了看起来不协调。所以人像要最先画。画好先显示。到后面主程序编写好了还要回头来调整人像尺寸。这里面两个“肩”是互相垂直并指向圆心的,这样最好画、看起来也协调。肩宽最后调整为10=BC=EF.这里面有一个隐形的等要直角三角形,斜边宽GA=(10+10)*1.41=20*1.41≈28.1,没有这个尺寸画人像无法收尾。人像身体的高度22也是调整出来的。看起来照片不会太挤。
3. 人像画的顺序是A-B-C-D-E-C-E-F-G-A.其中“下巴”圆弧是倒退着画出来的。
4. 用FOR[I 1 4][FOR[J 1 11-:I][]]循环能够画4层,每层10、9、8、7个人像。
5. 每个人像左右间距58 SETX XCOR+58
每行人像最右下方的起点用这样的命令SETXY -294+:I*29 -95+:I*38定位。但是这其中的数据也是试出来的。
所以应对这样的编程题,平时要有大量实践上机,编程的经验要足够多,否则临时无非应对这样繁杂的调整、调试。


编程源程序:
TO BYZ_MF ;*MSWLogo-FMSLogo编程适用
;红色字体是编程中等待调整数据
CS
PU SETXY -280 -125 PD ;确定最外框左下方的位置
REPEAT 2[FD 250 RT 90 FD 580 RT 90]
PU SETXY -277 -122 PD ;确定内框左下方的位置
REPEAT 2[FD 244 RT 90 FD 574 RT 90]
FOR[I 1 4][ ;画4层人像
PU SETXY -294+:I*29 -95+:I*38 PD
;每层人像左下角的起点位置是算出来的
FOR[J 1 11-:I][ ;每层10、9、8、7人
RX ;画一个人像
PU SETX XCOR+58 PD]] ;抬笔位移到右边的人像位置
SETH 90 ;注意!MSWLogo-FMSLogo输出文字应对准的方向
PU SETXY -133 -80 PD ;移动到书写文字处
LABEL [实验小学六年(1)班毕业照 2066.6]
END


TO RX ;画单个人像 沿A-B-C-D-E-C-E-F-G-A来画
FD 22 RT 45 FD 10 LT 90 ;身体高22,肩宽10
REPEAT 36[RT 5 FD 10*PI/18 RT 5] ;头半径10
REPEAT 9[LT 5 BK 10*PI/18 LT 5] ;画C-E段下巴
RT 90 BK 10 RT 45 BK 22 ;10是肩宽,22是身体高
LT 90 FD 20*1.41 RT 90 ;头半径10+肩宽10对应角度90度
;总身宽(10+10)×1.41≈28.2
END
-------------------------------------------


TO BYZ_P ;*PCLogo编程适用 红色字体是不断调整适应图形的数据
DRAW HT
PU SETXY[-280 -125] PD ;确定最外框左下方的位置
REPEAT 2[FD 250 RT 90 FD 580 RT 90]
PU SETXY[-277 -122] PD ;确定内框左下方的位置
REPEAT 2[FD 244 RT 90 FD 574 RT 90]
FOR 'I 1 4 [PU SETX -294+:I*29 SETY -95+:I*38 PD \
FOR 'J 1 11-:I[RX PU SETX XCOR+58 PD]]
PU SETXY[-113 -80] PD ;移动到书写文字处
TT [实验小学六年(1)班毕业照 2066.6]
END
TO RX ;画单个人像
FD 22 RT 45 FD 10 LT 90 ;身体高22,肩宽10
REPEAT 36[RT 5 FD 10*PI/18 RT 5] ;头半径10
REPEAT 9[LT 5 BK 10*PI/18 LT 5] ;画C-E段下巴
RT 90 BK 10 RT 45 BK 22 ;10是肩宽,22是身体高
LT 90 FD 20*1.41 RT 90 ;头半径10+肩宽10对应角度90度
;总身宽(10+10)×1.41≈28.2
END


2026年03月24日
2026年03月24日

用LOGO语言编程的游戏程序:
2026年03月24日

我的更多文章

下载客户端阅读体验更佳

APP专享