对于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调节决定(60为1秒),在调试时WAIT延时可以进行调节。
应注意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