一、疯狂打地鼠
第3课 打地鼠-随机延时等待用户正确按键

一、任务目标
随机等 1~2 秒再随机亮 1 或 2 号灯;按任意外接键后,只有按对侧才灭灯。完整代码还要求从亮灯起 1 秒内按对,否则点阵显示叉。
二、我们要学什么
- 学习要点:随机的是等待和灯号;按对才灭灯
- 本课过关:能指出体验按错侧灯会一直亮;完整代码还要 ticks 差小于 1000。
- 示例对齐:体验题对应 「1-3-1 打地鼠-随机延时等待用户正确按键」;完整代码对应 「1-3-2 打地鼠-随机带时等待用户正确按键」。
三、本节要点
体验没有计时、没有 YES/NO。超时判定在 1-3-2。
1读场景明确真实任务
2对要点随机等待,按对才灭
3载入运行本课积木/代码
四、解题思路
- 输入:pin0 对应 1 号灯,pin1 对应 2 号灯。
- 输出:LED;完整代码另有点阵对勾/叉。
- 生活对照:地鼠何时冒、从哪冒都不固定。
- 验证现象:每次亮灯前等待长短不同;按错侧灯不灭。
本课主要用到:随机数、外接按键、LED;完整代码另用运行时间和点阵。
- 1sleep(uniform(1,2))。
- 2randint 亮灯。
- 3等到 pin0 或 pin1。
- 4仅当按对侧才灭灯。
流程示意(可对照左侧文字)
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 逻辑 | 组合多个条件。 | 等到 pin0 或 pin1。 |
![]() | 控制 | 读取开机以来的毫秒数,用于计时、测反应。 | 完整代码:亮灯时间 = ticks_ms()。 |
![]() | 数学 | 加、减、乘、除等运算。 | 完整代码:现在时刻减亮灯时刻。 |
![]() | 板载显示 | 在点阵上显示内置或自定义图案(心形、对勾等)。 | 完整代码:对了 YES,错了/超时 NO。 |
六、知识点讲解
本课核心是按对才算打中。随机等待防止抢跑;灯号随机后要对侧按键。
或
内层用 pin0 or pin1 结束等待。
并且
灭灯条件是(pin0 且灯号1)或(pin1 且灯号2)。
1 秒
完整代码还要 ticks 差 < 1000。
- 过关:能说明按错侧为什么灯不灭。
先弄清本课输入与输出,再进编程练习对照现象。
七、编程练习
点「载入」打开 MixVM(board=mixgo_zero_design)。外设课会自动导入对应外接模块到右侧仿真。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读本页「四、解题思路」与「五、图形块功能讲解」,再点载入。
1-3-1 打地鼠-随机延时等待用户正确按键.mix。载入后运行。
正在载入编程环境
正在载入 MixGo ZERO 仿真编程环境…
八、课堂练习
先完成两道判断题,再完成选择题;全部选定后点「检查」。
判断:体验程序只要按下任意外接键就会灭灯。
判断:亮灯前的 random.uniform(1,2) 用来防止猜节奏。
体验在按键之后还做什么计时?
完整代码按对且未超时会显示?
九、本节小结
记住:按对才灭灯;1 秒限时是完整代码。



