控制#

介绍#

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

以下是可用模块列表:

  • wait – 暂停执行指定时长。

  • wait until – 暂停执行,直到满足指定的条件。

  • repeat – 将封闭的代码块重复指定次数。

  • forever – 无限重复封闭的块。

  • 重复直到 – 重复执行封闭的代码块,直到满足某个条件。

  • while – 当条件为真时,重复执行封闭的代码块。

  • if – 如果条件为真,则运行封闭的代码块。

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

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

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

  • 停止项目 – 结束项目的执行。

等待#

等待 代码块会在执行下一个代码块之前暂停一段时间。

等待栈块#
等待 (1) 秒

参数

描述

时间

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

例子

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

等到#

wait until 代码块会暂停执行,直到满足指定的条件后再继续执行下一个代码块。

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

参数

描述

状况

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

例子

启动后,屏幕会一直向前移动,直到按下屏幕,然后停止所有移动。#
当开始
[Move forward until the screen is pressed, then stop.]
驱动 [向前 v]
等到 <屏幕按下了?>
驱动停止

重复#

repeat 代码块会按照设定的次数运行其内部的代码块。

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

参数

描述

时代

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

例子

当开始
[Move in a square path.]
重复 [4]
驱动 [向前 v] [150] [毫米 v] ▶
[右 v] 转 [90] 度 ▶
结束

永远#

无限循环 代码块会不停地重复运行它内部的代码块。

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

参数

描述

此代码块没有参数。

例子

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

重复直到#

repeat until 代码块会在条件评估为 False 时重复执行其包含的代码块。

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

参数

描述

状况

每次迭代前都要计算的表达式或变量。如果计算结果为:

  • False - 循环继续
  • True - 循环停止

例子

启动时,所有 LED 指示灯保持红色,直到按下屏幕,然后熄灭。#
当开始
[Turn until the screen is pressed.]
重复直到 <屏幕按下了?>
[右 v] 转
结束
驱动停止

尽管#

当条件为真时,while 代码块会重复执行其包含的代码块。

当 c 块#
当 <>
结束

参数

描述

状况

每次迭代前都要计算的表达式或变量。如果计算结果为:

  • True - 循环继续
  • False - 循环停止

例子

一系列代码块以一个 when started 代码块开始,后面跟着一个注释代码块,内容为“2 秒后显示时间”。一个 wait until 代码块会暂停执行,直到计时器达到或超过 2 秒。一旦满足此条件,一个 print 代码块会在屏幕上显示计时器的值。#
当开始
[Display the time for one minute.]
当 <(计时器秒数) [math_less_than v] [60]>
清屏
在屏幕上设定光标至 [1] 行 [1] 列
在屏幕上打印 (计时器秒数)▶

如果#

如果条件判断为真,则 if 代码块执行其包含的代码块。

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

参数

描述

状况

语句运行时会计算的表达式或变量。如果计算结果为:

  • True - 执行 if 代码块内的代码;
  • False - 跳过该代码块;

例子

启动后,机器人会持续检测屏幕是否被按下。如果被按下,机器人会以中等力度踢一个物体。#
当开始
[Turn in a circle if the screen is pressed.]
永久循环
如果 <屏幕按下了?> 那么
[右 v] 转 [360] 度 ▶
结束
驱动停止
结束

如果/否则#

if / else 代码块根据条件评估结果为真或假来决定执行哪个封闭的代码块。

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

参数

描述

状况

语句运行时会计算的表达式或变量。如果计算结果为:

  • True - 执行 if 块内的代码
  • False - 改为执行 else 语句块内的代码

例子

如果则否则阻止#
当开始
[Display a message if the screen is being pressed.]
永久循环
清屏
在屏幕上设定光标至 [1] 行 [1] 列
如果 <屏幕按下了?> 那么
在屏幕上打印 [Pressed!]▶
否则
在屏幕上打印 [Not pressed!]▶
结束

如果/否则如果/否则#

if / else if / else 代码块结构根据条件选择执行哪个封闭的代码块:

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

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

  • else 仅当前面所有条件均不为真时才执行其代码块。

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

参数

描述

状况

语句运行时会被求值的表达式或变量。第一个求值为:

  • True - 决定执行哪个代码块
  • False - 如果没有条件为真,则执行 else 代码块 True

例子

如果则否则阻止#
当开始
[Move the robot based on the Controller button is being pressed.]
永久循环
如果 <[Controller 1 v] [ 按下?> 那么
[右 v] 转
否则如果 <[Controller 1 v] [ 按下?> 那么
[左 v] 转
否则
驱动停止
结束

休息#

break 代码块会立即退出循环。

中断堆栈块#
退出循环

参数

描述

此代码块没有参数。

例子

启动后,向右旋转,直到按下屏幕,然后停止。#
当开始
[Stop turning after the screen is pressed.]
永久循环
[右 v] 转
如果 <屏幕按下了?> 那么
退出循环
结束
结束
驱动停止

停止项目#

停止项目 代码块会结束正在运行的项目。

停止项目阻塞#
停止程序

参数

描述

此代码块没有参数。

例子

启动后,向右旋转,直到按下屏幕,然后停止项目。#
当开始
[Stop the project entirely after the screen is pressed.]
永久循环
[右 v] 转
如果 <屏幕按下了?> 那么
停止程序
结束
结束