LOGO编程画个CPU(二)

2022年厦门地区的小学生LOGO语言信息学竞赛的第一题便是画个CPU。那么多的针脚,都要对齐居中,中间还要画个框写屏显示CPU。题目不难,但是着实有些麻烦。120分钟考4道现场编程题,后面的题目更难,这道题按道理只能分配15~20分钟必须完成。这时迅速的决断、拿出合理的整体编程方案是节约时间的关键。这道题大体上可以有两种编程路径,今天说一说第一种比较“懒”的方案:A.先居中画外框;B.把中间17×17个针脚全画上——这样简单方便呀;C.擦除中间多余的针脚;D.画好内框;E.写屏CPU。思路清晰简单,程序也不长,熟练的话10分钟就能编写好。但是这其中有一个编程技术难点:中间那个方块怎么擦除?!“画一个白色的方框,往中间填充白色”是绝对不行的,因为整个图形的背景是白色的,这样画白色色块无法执行。但是编程熟练的选手有的是办法:用一根根宽度为2的白色竖线密集排着逐一画过去,擦除任务就完美实现了。整个过程上面的动画已经再清楚不过了——这个动画其实也是用MSWLogo-FMSLogo编写的,LOGO程序可以直接输出GIF动画,直观得很。画CPU编程的源程序如下:
to cpu ;for
fmslogo8.3.2
cs
setpc 0
pu
setxy -215 -215 pd ;移动到外框左下角
repeat 4[fd 430 rt 90] ;画外框
pu
setxy -200 -200
;移动到画所有针脚左下角位置
for[y 1 17][
;画竖向17行针脚
for[x 1 17][
;画黄向17根针脚
pd
setpensize 2 circle
5 ;画一根针脚
setpensize 1 circle
10
pu setx
xcor+25]
setx xcor-25*17
;画完一行移动到针脚起始X位置
sety ycor+25]
;向上移动到上面一行Y起始位置
setpc 7 setpensize 2
;注意!用密集的宽2的竖线擦除中间不需要的针脚
for[x -137.5 137.5][
pu setxy :x -137.5 pd fd 275 bk
275]
pu
setxy -125 -125 pd setpensize 1 setpc 0
;移动到画内框起始位置
fd
250-70/sqrt 2 rt 45 fd 70 rt 45 fd 250-70/sqrt 2
;画内框
rt
90 fd 250 rt 90 fd 250
;移动到中心写下CPU
pu
setxy -25 10 pd seth 90
label "CPU
ht
end
还有一种编程方式
下次接着讲
厦门地区2005~至今所有的复赛题的源程序请参考:
下面这些都是以往复赛的图解:
LOGO编程好实例
尽在林老师的博客中
到其它地方你能找到这样的详解吗
加载中,请稍候......