一、疯狂打地鼠
第2课 打地鼠-等待用户按键输入

一、任务目标
灯亮后程序停下来等你按外接键:体验只亮 1 号灯、等 pin0,按下后灭灯并停 1 秒。完整代码随机亮 1 或 2 号,必须按对那一侧才灭。
二、我们要学什么
- 学习要点:先亮灯,再用内层循环等到按键,而不是靠延时碰运气
- 本课过关:能指出体验只等 pin0;完整代码亮灯编号 1 等 pin0、编号 2 等 pin1。
- 示例对齐:体验题对应 「1-2-1 打地鼠-等待用户按键输入」;完整代码对应 「1-2-2 打地鼠-等待用户正确按键」。
三、本节要点
内层 while 一直查按键,为真才 break。体验没有随机灯号。
1读场景明确真实任务
2对要点亮灯后等待按键
3载入运行本课积木/代码
四、解题思路
- 输入:体验:pin0。完整代码:pin0 对 1 号灯、pin1 对 2 号灯。
- 输出:对应板载 LED 亮灭。
- 生活对照:地鼠冒出来,打中才消失。
- 验证现象:灯亮后不按会一直亮;按下才灭并停 1 秒。
本课主要用到:外接按键、板载 LED、延时。
- 1点亮目标灯。
- 2内层循环等到对应按键。
- 3灭灯后 sleep(1)。
- 4完整代码先 random 1 或 2。
流程示意(可对照左侧文字)
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 变量 | 给变量写入新值。 | 完整代码:亮灯编号 = randint(1,2)。 |
![]() | 数学 | 在指定范围内随机取整数或小数。 | 完整代码随机 1 或 2。 |
![]() | 变量 | 读取变量当前值。 | 用亮灯编号去点灯、灭灯。 |
![]() | 逻辑 | 比较两个值(大于/等于/小于等),得到真或假。 | 完整代码:编号==1 则等 pin0。 |
六、知识点讲解
本课核心是等待输入:灯已经亮了,内层循环直到按键才 break。
体验
固定亮 1 号,只查 pin0。
完整代码
随机灯号,按错侧会一直等。
延时
灭灯后的 1 秒是回合间隔,不是用来「等到按键」。
- 过关:能说出为什么必须用内层循环等按键。
先弄清本课输入与输出,再进编程练习对照现象。
七、编程练习
点「载入」打开 MixVM(board=mixgo_zero_design)。外设课会自动导入对应外接模块到右侧仿真。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
1-2-1 打地鼠-等待用户按键输入.mix。载入后运行。
正在载入编程环境
正在载入 MixGo ZERO 仿真编程环境…
八、课堂练习
先完成两道判断题,再完成选择题;全部选定后点「检查」。
判断:体验程序会随机点亮 1 号或 2 号灯。
判断:灯亮之后,要用内层循环等到按键,而不是只靠 sleep。
体验等到的是哪一个输入?
完整代码亮灯编号为 2 时应等?
九、本节小结
记住:先亮灯再等按键;随机按对侧是 1-2-2。



