加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2024-03-15 16:22:50)
标签:

林老师

信息学竞赛

pclogo

mswlogo

fmslogo

分类: WinXP~7~8~10运行Logo语言
火柴梗组数字还有很多种玩法
火柴梗组数字还有很多种玩法
火柴梗组数字还有很多种玩法
      官方(厦门市教育局-厦门市科协)举办的小学生信息学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位计算机
还在使用彩电  黑白电视机代替显示器
今天我们学习的条件不知道好了多少倍!
祝愿祖国更加繁荣昌盛!

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





0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有