三、反应测试
第12课 循环等待用户输入

一、任务目标
系统会停下来等你按键或输入,你准备好了再继续下一步,节奏由你掌握。
二、我们要学什么
- 学习要点:循环反复检查按键,直到按下才进入下一步,不能只延时碰运气
- 本课过关:程序会停着等按键,按下后才进入下一步,而不是靠延时碰运气。
- 示例对齐:体验题对应 「3-1-1 循环等待用户输入」;完整代码对应 「3-1-3 计算反应时间」。
三、本节要点
本节抓住「循环等待直到条件满足」。读场景后对照循环何时结束,载入运行:不按则一直等,按下才继续。
1读场景明确真实任务
2对要点循环等到按下
3载入运行本课积木/代码
四、解题思路
- 输入:板载按键。
- 输出:进入下一步后的灯或提示。
- 生活对照:准备好了再按开始。
- 验证现象:不按时停在等待;一按立刻继续。
本课主要用到:板载指示灯、板载按键。
- 1明确任务「循环等待用户输入」:要观察的输入/输出主要是 板载指示灯、板载按键。
- 2用「重复执行」搭出主循环,让程序一直运行,而不是只执行一次就结束。
- 3把计算结果映射到可观察输出(灯、屏、声),每改一处输入就看输出是否跟随。
- 4在循环里判断按键:刚按下用 was_touched(触发一次),按住用 touched(持续有效)。
- 5加入延时(约 1 秒/单位),控制节奏,避免画面闪太快或采样过密。
- 6载入后先运行,对照「板载指示灯」;再只改一处参数看差异。
流程示意(可对照左侧文字)
五、图形块功能讲解
下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。
| 图形块 | 分类 | 作用 | 本课用法 |
|---|---|---|---|
![]() | 控制 | 先跑一遍循环体,再根据条件决定是否继续。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
![]() | 控制 | 读取开机以来的毫秒数,用于计时、测反应。 | 本课编程练习中首次使用,载入后可在工具箱对照。 |
六、知识点讲解
本课核心是循环等待:反复检查按键,直到按下才进入下一步。不能靠「延时一会儿碰运气」。
等到条件满足
内层循环的退出条件是「用户按下了」。没按就一直等,程序停在这一步,节奏由你掌握。
延时不是等待输入
延时只是暂停固定时间,不管你按没按。用延时代替等待,会出现还没准备好就继续、或按了却没被看见。
为测反应做准备
后面测反应时间,也要先能「等到按下」。本课先把等待写对。
- 验证:不按时程序停在等待;一按立刻继续下一步。
- 过关:能指出哪一段循环在等按键,而不是哪一段在 delay。
会写「等到按下」之后,下一课再测按下花了多久。
七、编程练习
点「载入」打开 MixVM(board=mixgo_zero_design)。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读自学精讲与解题思路,再点载入。
3-1-1 循环等待用户输入.mix。载入后运行。
正在载入编程环境
正在载入 MixGo ZERO 仿真编程环境…
八、课堂练习
先完成两道判断题,再完成选择题;全部选定后点「检查」。
判断:用固定延时代替循环检测,也能可靠地等到用户按下后再继续。
判断:应在循环中反复检测按键,直到按下才结束等待并进入下一步。
延时与循环等待的本质区别是什么?
在用户尚未按下时,程序应当如何?
九、本节小结
记住:灯先亮着,内层循环反复查 T2,按下才 break;不是靠延时碰运气等到按键。

