火柴梗组数字还有很多种玩法


官方(厦门市教育局-厦门市科协)举办的小学生信息学LOGO语言复赛题新年倒计时是一个有趣的编程选题。比较合理的编程方式,就是造一个“字库”,需要显示什么数字到“字库”里面找数据,这样显示数字就十分简单了。如果是编写012345这样6个程序,一个程序输出一个数字,倒也是可以,但在思维的高度上就显得十分低级。引用“字库”来显示火柴梗数字的原理在上一次的博客里已经说过了,请自己找来看看。下面的GIF动画是显示一个数码字里所有的笔画的动态流程。一看就清楚了。
MSWLogo-FMSLogo的作图功能是很强大的。在这几篇博客中所有的GIF动画都是用MSWLogo-FMSLogo编写出来的。具体的编程方法在林老师编著的《MSWLogo讲义Plus》(完全兼容FMSLogo)
现在先说说竞赛题《新年倒计时》的编程源程序:
to xndjs ;主程序for
fmslogo8.3.2
cs
make "shu [
[1 1 1 1 1 1 0]
;0
[0 0 1 1 0 0 0]
;1
[0 1 1 0 1 1 1]
;2
[0 1 1 1 1 0 1]
;3
[1 0 1 1 0 0 1]
;4
[1 1 0 1 1 0 1]
;5
[1 1 0 1 1 1 1]
;6
[0 1 1 1 0 0 0]
;7
[1 1 1 1 1 1 1]
;8
[1 1 1 1 1 0 1]
;9
]
for[n 5 0 -1][
cs zhi :n wait
60]
cs
make "nf 2024
pu setx -300
for[i 1 4][
make "n item :i
:nf
seth 0 zhi :n pu
seth 90 fd 30]
end
to hc :k ;单根火柴 :K=1黑色
:K=0白色
if :k=1[setpc 0]
if :k=0[setpc 7]
setpensize 1 pu fd
8
lt 90 fd 4 rt 90
pd
repeat 3[fd 100 rt 90 fd 8 rt
90]
lt 90 bk 4 lt
90
setpensize 14 fd 1 bk
1
pu setpensize 1 fd 12
pd
end
to zhi :n
make "nn item :n+1
:shu
for[i 1 7][
make "k item :i
:nn
hc :k rt
90
if :i=3[lt
90]]
end
下面是输出题头随机彩色四位数的源程序:
to djs5_G ;for
fmslogo8.3.2
cs HT
PU SETXY 0 0 SETH 0
PD
setactivearea [-475 -150
165 200]
make "append
"false
make "shu
[
[1 1 1
1 1 1 0] ;0
[0 0 1
1 0 0 0] ;1
[0 1 1
0 1 1 1] ;2
[0 1 1
1 1 0 1] ;3
[1 0 1
1 0 0 1] ;4
[1 1 0
1 1 0 1] ;5
[1 1 0
1 1 1 1] ;6
[0 1 1
1 0 0 0] ;7
[1 1 1
1 1 1 1] ;8
[1 1 1
1 1 0 1] ;9
]
CS
for[n 1
15][
MAKE
"PC REMAINDER :N 5
SETPC
:PC
PU
SETXY -400 170 PD SETH 90
SETLABELFONT [[宋体] 34
17]
PD
label [火柴梗组数字还有很多种玩法]
PU
SETXY -465 -145 PD SETH 0
REPEAT
2[FD 340 RT 90 FD 610 RT 90]
PU
SETXY 0 0 PD
make
"nf 1000+random 9999
pu setx
-450
for[i 1
4][
make "n item :i :nf
seth 0 zhi :n pu seth 90 fd 30] GIF_
100]
GIF_ 100
end
TO GIF_ :T
(GIFSAVE "DJS5.GIF :T
:APPEND 0)
MAKE "APPEND
"TRUE
END
to hc :k
MAKE "PC
RANDOM 6
if :k=1[setpc
:PC]
if :k=0[setpc
7]
setpensize 1 pu fd
8
lt 90 fd 4 rt 90
pd
repeat 3[fd 100 rt 90 fd 8
rt 90]
lt 90 bk 4 lt
90
setpensize 14 fd 1 bk
1
pu setpensize 1 fd 12
pd
end
to zhi :n
make "nn item :n+1
:shu
for[i 1
7][
make "k
item :i :nn
hc :k
rt 90
if
:i=3[lt 90]]
end
把最近林老师连载发表的三篇博客串起来看,相信你一定会搞明白这个数字倒计时是怎么编程成功的。考试竞赛不是目的,提高编程思维能力才是学编程的根本目的。现在说得火热的AI人工智能,其核心技术其实也是编程。学习LOGO编程入门容易,但是其中的内涵并不简单。当你突破了一个编程思维的难点时,一定会从内心中感受到愉悦。
=============================================
当年的计算机是很初级的48K内存的8位计算机
还在使用彩电
黑白电视机代替显示器
今天我们学习的条件不知道好了多少倍!
祝愿祖国更加繁荣昌盛!
===========================================

加载中,请稍候......