控制#

介紹#

VEXcode 中的控制區塊透過處理循環、條件和延遲區塊的運作來管理專案的流程。

循環是指電腦重複執行相同的步驟或步驟群組,直到收到停止指令為止。條件是計算機用來決定下一步操作的規則。例如,當機械手臂正在移動物體時,指示燈可以亮起。

以下是可用模組列表:

  • wait – 暫停程式碼區塊運行指定的時間。

  • wait until – 暫停程式碼區塊運行,直到滿足指定的條件。

  • repeat – 將一組程式碼區塊重複指定次數。

  • forever – 無限重複一組方塊。

  • repeat until – 重複執行一組程式碼區塊,直到滿足某個條件。

  • while – 當條件為真時,重複執行一組程式碼區塊。

  • if – 若條件為真,則執行一組程式碼區塊。

  • if / else – 如果條件為真,則執行一組程式碼區塊;否則,執行另一組程式碼區塊。

  • if / else if / else – 根據多個條件執行不同的程式碼區塊集。

  • break – 立即退出 repeat、forever、repeat until 或 while 循環。

  • 停止專案 – 結束專案。

等待#

wait 堆疊區塊會在執行下一個程式碼區塊之前暫停目前程式碼區塊運行一段時間。

等待堆疊塊#
等待 (1) 秒

參數

描述

時間

等待時間,以秒為單位,表示為正整數或小數。

例子

啟動後向前移動一秒鐘,然後停止所有動作。#
當開始時
[Move to the left, then the right after one second.]
將 [手臂 v] 位置遞增 x:[100] y:[0] z:[0] [mm v] ▶
等待 (1) 秒
將 [手臂 v] 位置遞增 x:[-100] y:[0] z:[0] [mm 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] [mm v]?>>
將 [手臂 v] 位置遞增 x:[100] y:[0] z:[0] [mm 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) [mm v] ◀ 且不等待
當 <非 <[手臂 v] 移動完成?>>
在主控台列印 ([手臂 v] 位置 [y v]([mm v])) ◀ 並將游標移至下一列
等待 [0.25] 秒

如果#

if C 程式碼區塊會在條件為True時執行其內部的程式碼區塊。

如果阻塞#
如果 <> 則
結束

參數

描述

狀態

語句運行時會檢查一個表達式或變數。如果該表達式或變數為真,則執行if程式碼區塊內的程式碼區塊;如果該表達式或變數為假,則跳過這些程式碼區塊。

例子

當開始時
[Check if the 6-Axis Arm can move to a position.]
如果 <非 <[手臂 v] 可移動至位置 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.]
如果 <非 <[手臂 v] 可移動至位置 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] [mm v]?> 則
將 [手臂 v] 位置遞增 x:[50] y:[0] z:[0] [mm v] ▶
否則如果 <[手臂 v] 增量位置 x:[0] y:[50] z:[0] [mm v]?> 則
將 [手臂 v] 位置遞增 x:[0] y:[50] z:[0] [mm v] ▶
否則
在主控台列印 [The 6-Axis Arm has reached the corner.] ◀ 並將游標移至下一列

休息#

break 程式碼區塊會立即退出循環。此程式碼區塊可以用於 repeat、repeat until、while 和 forever 程式碼區塊中。當循環需要根據專案運行過程中發生的事件(例如按鈕被按下或感測器偵測到物體)提前停止時,break 非常有用。

中斷堆疊區塊#
中斷

參數

描述

此程式碼區塊沒有參數。

停止項目#

停止專案堆疊區塊會結束正在執行的專案。

停止項目阻塞#
停止專案

參數

描述

此程式碼區塊沒有參數。