CAMPUS RUN · 算法实验室

右侧为课堂环节,完成当前目标即解锁下一环节

区内 in_z —
障碍最近距 —

课堂环节 · 导学园地

当前:按环节标签与蓝色目标推进;课前全文与详解见折叠区。

【课前导读】项目要点与情境思考(点击展开)

【项目要点】

自建教具:「何时起跳」→ 可重复判断。环节 0手动体验(暂不画检测区);环节 1起检测区与滑条(手动起跳);环节 2用 Blockly 搭建判断条件(可开自动闯关);环节 3只看仿真尺度工具(加速与快进)。不讨论破坏真实游戏。

【情境思考】(课前可讨论)

  1. 程序替你跳,每帧至少需要哪两类信息?
  2. 检测区太宽 / 太窄,自动跳分别易出现误跳还是漏跳?
  3. 漏跳、误跳与条件过「严」还是过「松」有何对应?

检测区参数(对照画布蓝框)
失败案例(一键载入,便于对照现象)
前移过大 + 区过宽 → 障碍尚远已相交,易过早跳。
区过窄且偏后 → 相交推迟,易过晚跳或漏跳。
起跳规则 · Blockly 积木

工作区默认为空:请自行拖出数值块(如 dist、zone_w)、用比较积木拼不等式,再与「相交」等传感器块用「并且/或者/非」组合,最终拼成一株输出真假的顶层积木;脚本每帧用 dist、inZ、zone_w 等驱动自动闯关是否起跳。

Python 对照(仅观察)

仅供参考观察 · 本页不运行代码;变量含义与侧栏仿真一致。


          
拓展

与侧栏「读取障碍 → 算距离/相交 → 判断 → 起跳」思路一致的 Python 风格示意。

# 逻辑上与游戏每帧一致(省略绘制与碰撞细节)
if on_ground and should_jump(dist, spd, obstacle_in_zone):
    do_jump()

完整程序还有仿真步长、输入事件等;此处仅突出条件分支与课堂变量对应关系。

过程性评价:本页会匿名汇总环节进度、尝试次数等(不含姓名)。四环节蓝色「目标」全部完成后,下方显示「课后巩固」参考答案与解析。

【课后巩固】巩固与验证(参考答案与解析)

下列内容为静态参考答案,仅在四环节目标全部达成后显示;不作本地填写、不上传。

基础 · 参数与因果

对照自动闯关:一组更易漏跳(该跳未跳),一组更易误跳(不该跳却跳)。

题目:易漏跳:写出三组参数(宽 / 高 / zone_start,单位 px)并说明为何更易漏跳。

参考答案:示例一组:zone_w = 52,zone_h = 34,zone_start = 8(数值仅示意)。障碍书脊已进入画面甚至较近,但轴对齐包围盒与蓝色检测区尚未相交 → inZ === false,自动闯关迟迟不起跳。

解析:漏跳本质是几何警觉范围偏小或偏后:宽度不足、高度不足或前移不足,都会推迟「相交」时刻,表现为反应「钝」。

题目:易误跳:三组参数及一句原因。

参考答案:示例一组:zone_w = 118,zone_h = 44,zone_start = 42。障碍尚在较远水平距离时,包围盒已与检测区相交 → inZ === true,若规则是「区内就跳」易过早起跳。

解析:误跳常见于警觉范围在前进方向上向前伸得过长(前移过大或宽度过大),或竖直范围过高导致「远处的小障碍」也被判为相交。

提高 · (书面拓展由教师另行布置)

为减轻认知负荷,本页不展示该档参考答案。

拓展 · 流程图思路

题目:用文字或箭头简述:每帧读取障碍 → 计算 dist → 判断 → 执行跳。

参考答案:障碍列表 → 取最近障碍 → 算水平间距 dist → 算 inZ(矩形相交)→ 代入预设或自定义式得到布尔值 → 若为真且角色在地面则施加跳跃(竖直速度)。

解析:这与教材中「输入—处理—输出」一致:dist、inZ 等是可观测输入,判断是规则层,跳是执行层;自动闯关把「人按空格」换成「程序按规则」。

与必修衔接(选做)

题目:本课「参数 / 判断规则」与教材 3.3.3「答题卡综合应用」在抽象层次或步骤拆分上的一处异同。

参考答案:同:都要把现象抽象成可判定条件(答题卡:填涂区域特征;本课:inZ、距离等)。异:答题卡多是静态图像一次识别;本课是仿真时间序列上每帧重复判定,参数微调改变的是「何时相交」而非单次拍照光照。

解析:对照有助于区分「离线识别」与「在线控制」:后者强调时序与多帧叠加(漏跳/误跳往往是多帧几何关系的结果)。

自学核对要点(无需勾选)
  • 能用自己的话解释漏跳与误跳各一例参数因果。
  • 能用自己的话说明「区内就跳」和「间距小于区宽就跳」有什么不一样。
  • 能口述「读取 → 判定 → 执行」与本课滑条/表达式的对应。

学号验证

请输入 6 位数学号;确认后关闭。