给出指令:算法

小学计算机科学一个确定性的网格机器人,执行前进和四分之一圈转向指令;起点和目标格固定,障碍物可编辑

编写程序,然后让机器人朝 G 移动。将棋盘格向上拖动以建造墙,向下拖动以移除墙。

3D

拖动装置进行调整。拖动背景进行旋转。滚动鼠标滚轮进行缩放。

测量记录本

更改设置、测试预测并保存结果。最多保留 12 个快照。

关于此实验

编写一个小程序,并在三维棋盘上进行测试。机器人会严格按照每条指令行动,因此受阻的移动或错误的转向都会清晰可见。比较预期路线与实际执行轨迹,然后修改程序并重试。

学习目标

  • 将路线转换为按顺序排列的精确指令。
  • 检查每一步之后的位置和朝向,以调试程序。
  • 说明在不改变指令的情况下,改变障碍物如何影响程序结果。

使用方法

  1. 1运行初始程序,并找出与预期路线不符的第一条指令。
  2. 2倒回程序,然后使用“单步”和“后退”检查每条指令执行后的位置。
  3. 3加载“路线示例”,预测终点,然后运行程序到达目标。
  4. 4向上拖动一个棋盘格,创建障碍物。使用命令按钮修正路线,然后记录程序及其结果。

模型

左转后的方向
右转后的方向

假设

  • 棋盘有六行六列。机器人从左下角出发,面朝右侧;目标在右上角。
  • 前进指令会移动一格。左转和右转会旋转90度,但不移动。发生碰撞或到达目标时,执行结束。
  • 机器人是一个指令解释器,并非刚体物理模拟。视觉插值不会改变离散的格子位置。

在课堂上试试这个实验

  1. Q1为什么同一组指令在一个棋盘上有效,移动墙壁后却会失败?
  2. Q2如果可以使用重复指令,怎样才能编写更短的程序?

常见问题

机器人会自己找路吗?

不会。它会严格按照给定的指令序列执行。寻找并修正路线就是这项实验的目的。

撞到墙时会发生什么?

机器人会停留在最后一个有效格子,标记该步受阻,并停止程序。