控制#

简介#

VEXcode AIM 中的控制块通过处理循环、条件和延迟块的运行来管理项目的流程。

循环是指计算机反复执行相同的步骤或步骤组,直到收到停止指令为止。条件是计算机用来决定下一步操作的规则。例如,如果传感器检测到物体,机器人就可以向前移动。

以下是可用指令块的列表:

等待#

wait 栈块会在执行下一个代码块之前,暂停当前代码块运行一段时间。

等待指令段#
等待 (1) 秒

参数

描述

时间

等待时间,以秒为单位,表示为正整数或小数。

示例

启动后,向前移动一秒钟,然后停止所有移动。#
当开始
[Move forward for one second, then stop.]
移动 [向前 v]
等待 (1) 秒
停止移动

等到#

等待直到栈块会暂停代码块的运行,直到满足指定的条件后才会执行下一个代码块。

等到指令段#
等到 <>

参数

描述

条件

此条件必须在程序继续执行下一个指令块之前被满足。

示例

当程序启动时,向前移动直到屏幕被按下,然后停止所有运动。#
当开始
[Move forward until screen pressed, then stop.]
移动 [向前 v]
等到 <屏幕按下了?>
停止移动

重复#

repeat C 代码块会执行其内部代码块设定的次数。

重复C型指令块#
重复 [10]
结束

参数

描述

次数

一个用于设置重复指令块运行次数的整数。

示例

当开始
[Move in a square path.]
重复 [4]
将 [向前 v] 移至 [50] [毫米 v] ▶
[右 v] 转 [90] 度 ▶
结束

永久循环#

永远运行的C代码块会不停地重复运行它内部的代码块。

永久循环 C 型指令块#
永久循环
结束

参数

描述

该指令块没有参数。

示例

启动后,以方形路径连续移动,向前移动 50 毫米,向右旋转 90 度,无限循环。#
当开始
[Move in a square path forever.]
永久循环
将 [向前 v] 移至 [50] [毫米 v] ▶
[右 v] 转 [90] 度 ▶
结束

重复直到#

repeat until C 代码块会反复运行其内部的代码块,直到满足指定的条件为止。

重复直到指令块#
重复直到 <>
结束

参数

描述

条件

每次循环前都会检查一个表达式或变量。如果该表达式或变量为False,则代码块继续重复执行;如果该表达式或变量为True,则循环停止。

示例

启动时,所有 LED 保持红色,直到按下屏幕,然后将其关闭。#
当开始
[Repeat until the screen is pressed before turning off the LEDs.]
重复直到 <屏幕按下了?>
设定 [lightall v] LED 颜色为 [红色 v]
结束
设定 [lightall v] LED 颜色为 [灭 v]

#

while C 代码块会在满足指定条件时重复运行其内部的代码块。

当 C 型指令块#
当 <>
结束

参数

描述

条件

每次循环前都会检查一个表达式或变量。如果为,则代码块继续重复执行;如果为,则循环停止。

示例

启动后,向前移动 200 毫米,同时所有 LED 保持绿色。移动停止后,LED 熄灭。#
当开始
[Keep the LEDs green while the robot is moving.]
将 [向前 v] 移至 [200] [毫米 v] ◀ 并且不等待
当 <活动起来?>
设定 [lightall v] LED 颜色为 [绿色 v]
结束
设定 [lightall v] LED 颜色为 [灭 v]

如果#

if C 代码块会在条件为True时运行其内部的代码块。

如果指令块#
如果 <> 那么
结束

参数

描述

条件

语句运行时会检查一个表达式或变量。如果该表达式或变量为,则执行if代码块内的代码块;如果该表达式或变量为,则跳过这些代码块。

示例

启动后,机器人会持续检测屏幕是否被按下。如果被按下,机器人会以中等力度踢出一个物体。#
当开始
[Kick when the screen is pressed.]
永久循环
如果 <屏幕按下了?> 那么
[中 v] 踢出对象
结束
结束

如果/否则#

if / else C 代码块根据条件是还是来决定运行哪一组代码块。

如果那么否则指令块#
如果 <> 那么
否则
结束

参数

描述

条件

语句运行时会检查一个表达式或变量。如果它为,则执行if代码块内的代码块。如果它为,则执行else代码块内的代码块。

示例

启动后,持续检测屏幕是否被按下。如果按下,则显示一个兴奋的期待表情;否则,显示一个无聊的期待表情。#
当开始
[Show one emoji when the screen is touched and a different one when it's not.]
永久循环
如果 <屏幕按下了?> 那么
显示 [emoji_excited v] 看向 [向前 v]
否则
显示 [emoji_bored v] 看向 [向前 v]
结束
结束

如果/否则 如果/否则#

if / else if / else 可扩展 C 代码块根据条件选择运行哪一组代码块:

  • 如果条件评估结果为True,则if 执行其代码块。

  • else if 语句仅在所有先前条件都为 False 时才会检查其他条件。可以使用多个 else if 语句。

  • 否则,仅当前面所有条件均不为时,才会执行其代码块。

如果否则如果否则指令块#
如果 <> 那么
否则如果 <> 那么
否则
结束

参数

描述

条件

语句运行时会检查一个表达式或变量。第一个为的条件会执行该组代码块。如果所有条件都为,则会执行else代码块内的代码块。

示例

当控制器的轴1位置发生变化时,向前推则向前移动,向后拉则反向移动,中立时停止。#
当Controller [1 v] 轴改变
[Move the robot forward or reverse based on the position of the joystick.]
如果 <(控制器轴 [1 v] 位置) [math_greater_than v] [0]> 那么
移动 [向前 v]
否则如果 <(控制器轴 [1 v] 位置) [math_less_than v] [0]> 那么
移动 [反 v]
否则
停止移动
结束

退出循环#

break 代码块会立即退出循环。该代码块可以用于 repeatrepeat untilwhileforever 代码块中。当循环需要根据项目运行过程中发生的事件(例如按钮被按下或传感器检测到物体)提前停止时,break 非常有用。

退出循环指令段#
退出循环

参数

描述

该指令块没有参数。

示例

启动时,每 0.5 秒闪烁一次红色和绿色 LED,直到按下屏幕,然后停止。#
当开始
[Flash LEDs until the screen is pressed.]
永久循环
设定 [lightall v] LED 颜色为 [红色 v]
等待 [0.5] 秒
设定 [lightall v] LED 颜色为 [绿色 v]
等待 [0.5] 秒
如果 <屏幕按下了?> 那么
退出循环
结束
结束

停止程序#

停止项目堆栈块会结束正在运行的项目。

停止程序指令块#
停止程序

参数

描述

该指令块没有参数。

示例

启动时,每 0.5 秒闪烁一次红色和绿色 LED,直到按下屏幕,然后停止项目。#
当开始
[Stop the project once the screen is pressed.]
永久循环
设定 [lightall v] LED 颜色为 [红色 v]
等待 [0.5] 秒
设定 [lightall v] LED 颜色为 [绿色 v]
等待 [0.5] 秒
如果 <屏幕按下了?> 那么
停止程序
结束
结束