控制#

介绍#

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

循环是指计算机反复执行相同的步骤或步骤组,直到收到停止指令为止。条件是计算机用来决定下一步操作的规则。例如,当机械臂正在移动物体时,指示灯可以亮起。

以下是可用模块列表:

  • wait – 暂停代码块运行指定的时间。

  • wait until – 暂停代码块运行,直到满足指定的条件。

  • repeat – 将一组代码块重复指定次数。

  • forever – 无限重复一组方块。

  • repeat until – 重复执行一组代码块,直到满足某个条件。

  • while – 当条件为真时,重复执行一组代码块。

  • if – 如果条件为真,则运行一组代码块。

  • if / else – 如果条件为真,则运行一组代码块;否则,运行另一组代码块。

  • if / else if / else – 根据多个条件运行不同的代码块集。

  • break – 立即退出 repeatforeverrepeat untilwhile 循环。

  • 停止项目 – 结束项目。

等待#

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

等待栈块#
等待 (1) 秒

参数

描述

时间

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

例子

启动后向前移动一秒钟,然后停止所有运动。#
当开始
[Move to the left, then the right after one second.]
[手臂 v] 位置递增x:[100] y:[0] z:[0] [毫米 v] ▶
等待 (1) 秒
[手臂 v] 位置递增x:[-100] y:[0] z:[0] [毫米 v] ▶

等到#

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

等待直到堆栈块#
等到 <>

参数

描述

状况

进入下一模块之前必须满足的条件。

重复#

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

重复 c 块#
重复 [10]
结束

参数

描述

时代

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

例子

当开始
[Move in a square pattern.]
重复 [4]
[手臂 v] 位置递增x:[2] y:[0] z:[0] [英寸 v] ▶
[手臂 v] 位置递增x:[0] y:[2] z:[0] [英寸 v] ▶
[手臂 v] 位置递增x:[-2] y:[0] z:[0] [英寸 v] ▶
[手臂 v] 位置递增x:[0] y:[2] z:[0] [英寸 v] ▶
结束

永远#

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

永远的C块#
永久循环
结束

参数

描述

此代码块没有参数。

例子

启动后,沿正方形路径连续运动,向前移动 50 毫米,然后向右转 90 度,形成无限循环。#
当开始
[Move in a square path forever.]
永久循环
[手臂 v] 位置递增x:[2] y:[0] z:[0] [英寸 v] ▶
[手臂 v] 位置递增x:[0] y:[2] z:[0] [英寸 v] ▶
[手臂 v] 位置递增x:[-2] y:[0] z:[0] [英寸 v] ▶
[手臂 v] 位置递增x:[0] y:[2] z:[0] [英寸 v] ▶
结束

重复直到#

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

重复直至阻塞#
重复直到 <>
结束

参数

描述

状况

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

例子

启动时,所有 LED 指示灯保持红色,直到按下屏幕,然后熄灭。#
当开始
[Increment along the x-axis until it's no longer possible.]
重复直到 <非 <[手臂 v] 位置增加x:[100] y:[0] z:[0] [毫米 v]?>>
[手臂 v] 位置递增x:[100] y:[0] z:[0] [毫米 v] ▶
结束
设定 [手臂 v] 停用

尽管#

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

当 c 块#
当 <>
结束

参数

描述

状况

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

例子

一系列代码块以一个 when started 代码块开始,后面跟着一个注释代码块,内容为“2 秒后显示时间”。一个 wait until 代码块会暂停执行,直到计时器达到或超过 2 秒。一旦满足此条件,一个 print 代码块会在屏幕上显示计时器的值。#
当开始
[Display the 6-Axis Arm's position as it moves.]
移动 [手臂 v] 到位置x:(-100) y:(200) z:(100) [毫米 v] ◀ 并且不等待
当 <非 <[手臂 v] 已结束?>>
在控制台上打印 ([手臂 v] [y v] 位置 [毫米 v])◀ 并设定光标为下一行
等待 [0.25] 秒

如果#

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

如果阻塞#
如果 <> 那么
结束

参数

描述

状况

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

例子

当开始
[Check if the 6-Axis Arm can move to a position.]
如果 <非 <[arm v] move to position x:[0] y:[0] z:[0] [mm v] ?>> 那么
打印 [The 6-Axis Arm can't move to this position.] ◀ 并设定光标为下一行

如果/否则#

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

如果则阻止#
如果 <> 那么
否则
结束

参数

描述

状况

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

例子

当开始
[Check if the 6-Axis Arm can or can't move to a position.]
如果 <非 <[arm v] move to position x:[100] y:[100] z:[100] [mm v] ?>> 那么
在控制台上打印 [The 6-Axis Arm can't move to this position.]◀ 并设定光标为下一行
否则
在控制台上打印 [The 6-Axis Arm can move to this position.]◀ 并设定光标为下一行

如果/否则如果/否则#

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

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

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

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

如果否则如果否则阻塞#
如果 <> 那么
否则如果 <> 那么
否则
结束

参数

描述

状况

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

例子

当开始
[Move until the 6-Axis Arm is at the corner of the tile.]
如果 <[手臂 v] 位置增加x:[50] y:[0] z:[0] [毫米 v]?> 那么
[手臂 v] 位置递增x:[50] y:[0] z:[0] [毫米 v] ▶
否则如果 <[手臂 v] 位置增加x:[0] y:[50] z:[0] [毫米 v]?> 那么
[手臂 v] 位置递增x:[0] y:[50] z:[0] [毫米 v] ▶
否则
在控制台上打印 [The 6-Axis Arm has reached the corner.]◀ 并设定光标为下一行

休息#

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

中断堆栈块#
退出循环

参数

描述

此代码块没有参数。

停止项目#

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

停止项目阻塞#
停止程序

参数

描述

此代码块没有参数。