コントロール#

導入#

VEXcode VRのコントロールブロックは、ループ、条件分岐、ブロックの実行遅延などを処理することで、プロジェクトの流れを管理します。

ループとは、コンピュータが停止指示を受けるまで、同じ手順または一連の手順を繰り返し実行することです。条件とは、コンピュータが次に何をするかを決定するためにチェックするルールです。例えば、センサーが物体を検出した場合、ロボットは前進することができます。

利用可能なブロックの一覧は以下のとおりです。

  • wait – ブロックの実行を特定の期間一時停止します。

  • wait until – 指定された条件が満たされるまでブロックの実行を一時停止します。

  • repeat – ブロックのセットを特定の回数繰り返します。

  • forever – ブロックのセットを無限に繰り返します。

  • repeat until – 条件が満たされるまで一連のブロックを繰り返します。

  • while – 条件が真である間、一連のブロックを繰り返します。

  • if – 条件が真の場合に一連のブロックを実行します。

  • if / else – 条件が真の場合は1つのブロックセットを実行し、そうでない場合は別のブロックセットを実行します。

  • if / else if / else – 複数の条件に応じて異なるブロックセットを実行します。

  • break – repeat、forever、repeat until、またはwhileループを即座に終了します。

  • stop project – プロジェクトを終了します。

待って#

waitスタックブロックは、次のブロックに進む前に、特定の時間だけブロックの実行を一時停止します。

スタックブロックを待機#
(1) 秒待つ

パラメータ

説明

時間

待機時間。正の整数または小数で、秒単位で指定します。

例

起動すると、1秒間前進した後、すべての動きを停止します。#
開始したとき :: hat events
[Move forward for one second, then stop.]
[前進 v] へ走行
(1) 秒待つ
走行停止

まで待つ#

wait untilスタックブロックは、指定された条件が満たされるまでブロックの実行を一時停止し、その後次のブロックに進みます。

スタックブロックまで待機#
<> まで待つ

パラメータ

説明

状態

次のブロックに進む前に満たさなければならない条件。

例

起動すると、画面が押されるまで前進し、画面が押されるとすべての動きを停止します。#
開始したとき :: hat events
[Move forward until a button is pressed, then stop.]
[前進 v] へ走行
<[LeftBumper v] 押された?> まで待つ
走行停止

繰り返す#

repeat C ブロックは、その中のブロックを指定された回数だけ実行します。

cブロックを繰り返す#
[10] 回繰り返す
終わり

パラメータ

説明

タイムズ

repeatブロックが実行される回数を設定する整数。

例

開始したとき :: hat events
[Move in a square path.]
[4] 回繰り返す
[前進 v] へ [150] [mm v] 走行 ▶
[右 v] へ [90] 度旋回 ▶
終わり

永遠に#

永遠に C ブロックは、停止することなく内部のブロックを何度も繰り返し実行し続けます。

フォーエバーCブロック#
ずっと
終わり

パラメータ

説明

このブロックにはパラメータがありません。

例

起動すると、50mm前進して90度右に旋回するという動作を無限ループで繰り返しながら、正方形の経路を連続的に移動します。#
開始したとき :: hat events
[Move in a square path forever.]
ずっと
[前進 v] へ [150] [mm v] 走行 ▶
[右 v] へ [90] 度旋回 ▶
終わり

まで繰り返す#

repeat until C ブロックは、指定された条件が満たされるまで、その中のブロックを繰り返し実行します。

ブロックするまで繰り返す#
<> まで繰り返す
終わり

パラメータ

説明

状態

各ループの前にチェックされる式または変数。False の場合、ブロックは繰り返し実行されます。True の場合、ループは停止します。

例

起動時は、画面が押されるまで全てのLEDが赤色に点灯し、画面が押されると消灯します。#
開始したとき :: hat events
[Move the pen until the bumper is pressed.]
[前進 v] へ走行
<[LeftBumper v] 押された?> まで繰り返す
ペンを移動 [下 v]
(0.5) 秒待つ
ペンを移動 [上 v]
(0.5) 秒待つ
終わり
(0.5) 秒待つ
走行停止

その間#

C言語のwhileブロックは、指定された条件が満たされている間、内部のブロックを繰り返し実行します。

cブロックの間#
<> の間繰り返す
終わり

パラメータ

説明

状態

各ループの前にチェックされる式または変数。True の場合、ブロックは繰り返し実行されます。False の場合、ループは停止します。

例

起動すると、すべてのLEDが緑色に点灯したまま200mm前進します。動作が停止するとLEDは消灯します。#
開始したとき :: hat events
[Display a message while moving.]
[前進 v] へ [300] [mm v] 走行 ◀ 待たない
<走行中?> の間繰り返す
[Moving...] を表示 ▶
(0.1) 秒待つ
全行をクリア
終わり
[Done!] を表示 ▶

もし#

if C ブロックは、条件が True の場合に内部のブロックを実行します。

ブロックの場合#
もし <> なら
終わり

パラメータ

説明

状態

ステートメントの実行時にチェックされる式または変数。True の場合、if ブロック内のブロックが実行されます。False の場合、ブロックはスキップされます。

例

起動時は、画面が押されているかどうかを継続的にチェックします。画面が押されている場合、ロボットは中程度の力で物体を蹴ります。#
開始したとき :: hat events
[Turn in a circle if the bumper is pressed.]
[前進 v] へ走行
ずっと
もし <[LeftBumper v] 押された?> なら
[後退 v] へ (200) [mm v] 走行 ▶
[右 v] へ (360) 度旋回 ▶
終わり
走行停止
終わり

if / else#

C言語のif / elseブロックは、条件がTrueかFalseかに基づいて、どのブロックセットを実行するかを決定します。

if then else ブロック#
もし <> なら
でなければ
終わり

パラメータ

説明

状態

ステートメントの実行時にチェックされる式または変数。True の場合は、if ブロック内のブロックが実行されます。False の場合は、else ブロック内のブロックが実行されます。

例

起動すると、画面が押されているかどうかを継続的にチェックします。画面が押されている場合は、前を向いている興奮した絵文字を表示し、押されていない場合は、前を向いている退屈そうな絵文字を表示します。#
開始したとき :: hat events
[If bumper pressed, reverse and turn right.]
ずっと
もし <[LeftBumper v] 押された?> なら
[後退 v] へ (100) [mm v] 走行 ▶
[右 v] へ (90) 度旋回 ▶
でなければ
[前進 v] へ走行
終わり

if / else if / else#

if / else if / else 展開可能な C ブロックは、条件に基づいてどのブロックセットを実行するかを選択します。

  • if は、条件が True と評価された場合にコードブロックを実行します。

  • else if は、それまでのすべての条件が False と評価された場合にのみ、追加の条件をチェックします。複数の else if 文を使用できます。

  • else は、前の条件のいずれも True と評価されなかった場合にのみ、コードブロックを実行します。

if else if else ブロック#
もし <> なら
もし <> なら(続き)
でなければ
終わり

パラメータ

説明

状態

ステートメントの実行時にチェックされる式または変数。最初の条件がTrueになると、そのブロックセットが実行されます。すべての条件がFalseと評価された場合は、elseブロック内のブロックが実行されます。

例

コントローラーの軸1の位置が変化すると、前方に押すと前進し、後方に引くと後退し、ニュートラル位置で停止します。#
開始したとき :: hat events
[Turn right if the an Eye Sensor detects red, left if it detects green, and continue driving if anything else.]
ずっと
もし <[FrontEye v] が [赤 v] を検出?> なら
[右 v] へ (90) 度旋回 ▶
もし <[FrontEye v] が [緑 v] を検出?> なら(続き)
[左 v] へ (90) 度旋回 ▶
でなければ
[前進 v] へ走行
終わり
終わり

壊す#

break スタックブロックは、ループを即座に終了します。このブロックは、repeat、repeat until、while、および forever ブロック内で使用できます。break は、ボタンが押されたり、センサーが物体を検出したりするなど、プロジェクト中に発生する何らかの事象に基づいてループを早期に停止する必要がある場合に便利です。

スタックブロックを中断する#
ブレーク

パラメータ

説明

このブロックにはパラメータがありません。

例

起動すると、画面が押されるまで0.5秒ごとに赤と緑のLEDが点滅し、その後停止します。#
開始したとき :: hat events
[Stop turning after a button is pressed.]
ずっと
[前進 v] へ走行
もし <[LeftBumper v] 押された?> なら
ブレーク
終わり
終わり
走行停止

プロジェクトを停止する#

stop project スタックブロックは、実行中のプロジェクトを終了します。

プロジェクトの停滞を解消する#
プロジェクトを停止

パラメータ

説明

このブロックにはパラメータがありません。

例

起動すると、画面が押されるまで0.5秒ごとに赤と緑のLEDが点滅し、その後プロジェクトが停止します。#
開始したとき :: hat events
[Stop the project entirely after a button is pressed.]
ずっと
[前進 v] へ走行
もし <[LeftBumper v] 押された?> なら
プロジェクトを停止
終わり
終わり