三、反应测试

第12课 循环等待用户输入

任务场景:循环等待用户输入
任务场景:循环等待用户输入

一、任务目标

系统会停下来等你按键或输入,你准备好了再继续下一步,节奏由你掌握。

二、我们要学什么

  • 学习要点:循环反复检查按键,直到按下才进入下一步,不能只延时碰运气
  • 本课过关:程序会停着等按键,按下后才进入下一步,而不是靠延时碰运气。
  • 示例对齐:体验题对应 「3-1-1 循环等待用户输入」;完整代码对应 「3-1-3 计算反应时间」。

三、本节要点

本节抓住「循环等待直到条件满足」。读场景后对照循环何时结束,载入运行:不按则一直等,按下才继续。

1读场景明确真实任务
2对要点循环等到按下
3载入运行本课积木/代码

四、解题思路

  • 输入:板载按键。
  • 输出:进入下一步后的灯或提示。
  • 生活对照:准备好了再按开始。
  • 验证现象:不按时停在等待;一按立刻继续。

本课主要用到:板载指示灯、板载按键。

  1. 1明确任务「循环等待用户输入」:要观察的输入/输出主要是 板载指示灯、板载按键。
  2. 2用「重复执行」搭出主循环,让程序一直运行,而不是只执行一次就结束。
  3. 3把计算结果映射到可观察输出(灯、屏、声),每改一处输入就看输出是否跟随。
  4. 4在循环里判断按键:刚按下用 was_touched(触发一次),按住用 touched(持续有效)。
  5. 5加入延时(约 1 秒/单位),控制节奏,避免画面闪太快或采样过密。
  6. 6载入后先运行,对照「板载指示灯」;再只改一处参数看差异。

流程示意(可对照左侧文字)

任务:循环等待用户输…搭出主循环,让程序一直运行…把计算结果映射到可观察输出…在循环里判断按键:刚按下用…加入延时(约1秒/单位),…

五、图形块功能讲解

下面只列出本课首次出现的 Mixly 图形块(真积木截图)。已在前面课讲过的不再重复;先认新块,再点「载入」对照拖搭。

图形块分类作用本课用法
先执行再判断
控制先跑一遍循环体,再根据条件决定是否继续。本课编程练习中首次使用,载入后可在工具箱对照。
系统运行时间
控制读取开机以来的毫秒数,用于计时、测反应。本课编程练习中首次使用,载入后可在工具箱对照。

六、知识点讲解

本课核心是循环等待:反复检查按键,直到按下才进入下一步。不能靠「延时一会儿碰运气」。

等到条件满足

内层循环的退出条件是「用户按下了」。没按就一直等,程序停在这一步,节奏由你掌握。

延时不是等待输入

延时只是暂停固定时间,不管你按没按。用延时代替等待,会出现还没准备好就继续、或按了却没被看见。

为测反应做准备

后面测反应时间,也要先能「等到按下」。本课先把等待写对。

  • 验证:不按时程序停在等待;一按立刻继续下一步。
  • 过关:能指出哪一段循环在等按键,而不是哪一段在 delay。

会写「等到按下」之后,下一课再测按下花了多久。

七、编程练习

点「载入」打开 MixVM(board=mixgo_zero_design)。在 Mixly 工具栏点「运行 / 停止」,「检查」做关键字核对。请先读自学精讲与解题思路,再点载入。

3-1-1 循环等待用户输入.mix。载入后运行。

八、课堂练习

先完成两道判断题,再完成选择题;全部选定后点「检查」。

  1. 判断:用固定延时代替循环检测,也能可靠地等到用户按下后再继续。

  2. 判断:应在循环中反复检测按键,直到按下才结束等待并进入下一步。

  3. 延时与循环等待的本质区别是什么?

  4. 在用户尚未按下时,程序应当如何?

九、本节小结

记住:灯先亮着,内层循环反复查 T2,按下才 break;不是靠延时碰运气等到按键。