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

动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

(2023-01-18 10:17:31)
标签:

c

林老师

pclogo

mswlogo

fmslogo

分类: WinXP~7~8~10运行Logo语言
动态游戏:打地鼠(3. MSWLogo-FMSLogo源程序)
动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

对于MSWLogo-FMSLogo编程而言这是个相对简单的编程游戏。

先调用KUANG画框子程序,再显示初始的分数0。然后调用鼠标命令行:

MOUSEON[MAKE "WZ MOUSEPOS PAND][][MOUSEOFF][][] ;鼠标命令

    在点击鼠标的左键时执行两个动作:

    MAKE "WZ MOUSEPOS读取鼠标点击位置的坐标:WZ。接着调用PAND判断点击是否有效子程序。

    PAND判断子程序编制成只有点击在框中才计算是哪一号:NN框的形式。只有和产生的随机框号:N相等时才进行加分。

    GAME主程序中有个FOR[I 1 20][]的循环,按照命题要求产生20次框号并在对应位置显示圆圈和三角形。两次出现“地鼠”之间的时间间隔由WAIT 18调节决定(601),在调试时WAIT延时可以进行调节。

   应注意MSWLogo-FMSLogo画图时地鼠是一个三角形。

动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)


编程程序:   

; FMSLogo编程适用

 

TO GAME  ;打地鼠游戏

  CS SETPC 0 SETPENSIZE 2  ;画图初始化

  KUANG      ;画框

  MAKE "F 0  ;开始分数为零0

  FEN :F     ;显示分数

  MOUSEON[MAKE "WZ MOUSEPOS PAND][][MOUSEOFF][][] ;鼠标命令

  FOR[I 1 20][          ;产生20次地鼠

    MAKE "N 1+RANDOM 6  ;地鼠的随机位置

    YUAN :N 0           ;在这个位置画圆圈地鼠

    WAIT 18             ;延时0.3 WAIT 60=1 时间可调节

    YUAN :N 7]          ;擦除原先的圆圈

  HT

END

 

TO FEN :F ;显示分数子程序

  PU SETX -50 SETY -30  ;定位到显示分数的位置

  SETPC 7 SETPENSIZE 40 SETH 90 PD FD 200 BK 200 ;用粗白线擦除旧的分数

  SETPENSIZE 2 SETPC 0    ;颜色为黑

  MAKE "FS WORD "得分: :F   ;连接分数显示项,并赋值给:FS

  LABEL :FS  ;显示分数

END

 

TO KUANG  ;画框子程序

  SETPENSIZE 2 SETPC 0 PU SETX -300 SETY 0 PD

  REPEAT 6[REPEAT 7[FD 100 RT 90]RT 90]

END

 

TO PAND ;鼠标命令调用的判断点击在哪一个格子的子程序

  MAKE "X FIRST :WZ MAKE "Y LAST :WZ

  IF (AND :X>-300 :X<300 :Y>0 :Y<100)[ ;必须点击在有效范围才响应

     MAKE "NN INT((:X+400)/100)      ;计算点击在了第:NN

     ;(PR :X :Y :NN :N)  ;测试坐标及是否点击中的显示 可是屏蔽

     IF :NN=:N[MAKE "F :F+5 FEN :F]] ;如果点击中了就加分

END

 

TO YUAN :N :K ;画及擦除圆圈的子程序 :K=0画黑色:K=7画白色擦除

  SETPC :K

  HT PU SETY 50 SETX :N*100-350 SETH 0 FD 30 RT 90 PD ;找到圆中心

  REPEAT 36[RT 5 FD 30*PI/18 RT 5]  ;画圆圈

  PU LT 90 BK 30 ST  ;根据题目示范图形的要求显示地鼠

END

 

---------------

 

;MSWLogo编程适用

TO GAME  ;打地鼠游戏

  CS SETPC 0 SETPENSIZE [2 2]  ;画图初始化

  KUANG      ;画框

  MAKE "F 0  ;开始分数为零0

  FEN :F     ;显示分数

  MOUSEON[MAKE "WZ MOUSEPOS PAND][][MOUSEOFF][][] ;鼠标命令

  FOR[I 1 20][          ;产生20次地鼠

    MAKE "N 1+RANDOM 6  ;地鼠的随机位置

    YUAN :N 0           ;在这个位置画圆圈地鼠

    WAIT 18             ;延时0.3 WAIT 60=1 时间可调节

    YUAN :N 7]          ;擦除原先的圆圈

  HT

END

 

TO FEN :F ;显示分数子程序

  PU SETX -50 SETY -30  ;定位到显示分数的位置

  SETPC 7 SETPENSIZE [40 40] SETH 90 PD FD 200 BK 200 ;用粗白线擦除旧的分数

  SETPENSIZE [2 2] SETPC 0    ;颜色为黑

  MAKE "FS WORD "得分: :F ;连接分数显示项,并赋值给:FS

  LABEL :FS  ;显示分数

END

 

TO KUANG  ;画框子程序

  SETPENSIZE [2 2] SETPC 0 PU SETX -300 SETY 0 PD

  REPEAT 6[REPEAT 7[FD 100 RT 90]RT 90]

END

 

TO PAND ;鼠标命令调用的判断点击在哪一个格子的子程序

  MAKE "X FIRST :WZ MAKE "Y LAST :WZ

  IF (AND :X>-300 :X<300 :Y>0 :Y<100)[ ;必须点击在有效范围才响应

     MAKE "NN INT((:X+400)/100)      ;计算点击在了第:NN

     ;(PR :X :Y :NN :N)  ;测试坐标及是否点击中的显示 可是屏蔽

     IF :NN=:N[MAKE "F :F+5 FEN :F]] ;如果点击中了就加分

END

 

TO YUAN :N :K ;画及擦除圆圈的子程序 :K=0画黑色:K=7画白色擦除

  SETPC :K

  HT PU SETY 50 SETX :N*100-350 SETH 0 FD 30 RT 90 PD ;找到圆中心

  REPEAT 36[RT 5 FD 30*PI/18 RT 5]  ;画圆圈

  PU LT 90 BK 30 ST  ;根据题目示范图形的要求显示地鼠

END


    以上程序只要复制粘贴到编辑器中就能运行使用。类似好玩的编程游戏在《复赛详解》中还有上百个,请自己找出来研究琢磨一下。
动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)

LOGO语言能够编写如下的动画:
动态游戏:打地鼠(3.MSWLogo-FMSLogo源程序)


0

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

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

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

新浪公司 版权所有