Control#

Introduction#

The Control blocks in VEXcode VR manage the flow of a project by handling loops, conditions, and delaying blocks from running.

A loop is when a computer repeats the same step or group of steps over and over until it is told to stop. A condition is a rule the computer checks to decide what to do next. For example, a robot can move forward if a sensor detects an object.

Below is a list of available blocks:

  • wait – Pauses blocks from running for a specific duration.

  • wait until – Pauses blocks from running until a specified condition is met.

  • repeat – Repeats a set of blocks a specific number of times.

  • forever – Repeats a set of blocks indefinitely.

  • repeat until – Repeats a set of blocks until a condition is met.

  • while – Repeats a set of blocks while a condition remains true.

  • if – Runs a set of blocks if a condition is true.

  • if / else – Runs one set of blocks if a condition is true, otherwise runs another.

  • if / else if / else – Runs different sets of blocks depending on multiple conditions.

  • break – Exits a repeat, forever, repeat until, or while loop immediately.

  • stop project – Ends the project.

wait#

The wait stack block pauses blocks from running for a specific amount of time before moving to the next block.

wait stack block#
    wait (1) seconds

Parameters

Description

time

The amount of time to wait, as a positive whole number or decimal in seconds.

Example

When started, moves forward for one second, then stops all movement.#
    when started :: hat events
    [Move forward for one second, then stop.]
    drive [forward v]
    wait (1) seconds
    stop driving

wait until#

The wait until stack block pauses blocks from running until a specified condition is met before moving to the next block.

wait until stack block#
    wait until <>

Parameters

Description

condition

The condition that must be met before moving on to the next block.

Example

When started, moves forward until the screen is pressed, then stops all movement.#
    when started :: hat events
    [Move forward until a button is pressed, then stop.]
    drive [forward v]
    wait until <[LeftBumper v] pressed?>
    stop driving

repeat#

The repeat C block runs the blocks inside it a set number of times.

repeat c block#
    repeat [10]
    end

Parameters

Description

times

A whole number that sets how many times the repeat block runs.

Example

    when started :: hat events
    [Move in a square path.]
    repeat [4]
        drive [forward v] for [150] [mm v] ▶
        turn [right v] for [90] degrees ▶
    end

forever#

The forever C block keeps running the blocks inside it again and again without stopping.

forever c block#
    forever
    end

Parameters

Description

This block has no parameters.

Example

When started, continuously moves in a square path by moving forward 50 mm and turning right 90 degrees in an infinite loop.#
    when started :: hat events
    [Move in a square path forever.]
    forever
        drive [forward v] for [150] [mm v] ▶
        turn [right v] for [90] degrees ▶
    end

repeat until#

The repeat until C block runs the blocks inside it repeatedly while the specified condition is not met.

repeat until block#
    repeat until <>
    end

Parameters

Description

condition

An expression or variable that is checked before each loop. If it is False, the blocks continue repeating. If it is True, the loop will stop.

Example

When started, keeps all LEDs red until the screen is pressed, then turns them off.#
    when started :: hat events
    [Move the pen until the bumper is pressed.]
    drive [forward v]
    repeat until <[LeftBumper v] pressed?>
        move pen [down v]
        wait (0.5) seconds
        move pen [up v]
        wait (0.5) seconds
    end
    wait (0.5) seconds
    stop driving

while#

The while C block runs the blocks inside repeatedly while the specified condition is met.

while c block#
    while <>
    end

Parameters

Description

condition

An expression or variable that is checked before each loop. If it is True, the blocks continue repeating. If it is False, the loop will stop.

Example

When started, moves forward for 200 mm while keeping all LEDs green. The LEDs turn off after movement stops.#
    when started :: hat events
    [Display a message while moving.]
    drive [forward v] for [300] [mm v] ◀ and don't wait
    while <drive is moving?>
        print [Moving...] ▶
        wait (0.1) seconds
        clear all rows
    end
    print [Done!] ▶

if#

The if C block runs the blocks inside if the condition is True.

if block#
    if <> then
    end

Parameters

Description

condition

An expression or variable that is checked when the statement runs. If it is True, the blocks inside the if block will run. If it is False, the blocks are skipped over.

Example

When started, continuously checks if the screen is pressed. If pressed, the robot kicks an object with medium force.#
    when started :: hat events
    [Turn in a circle if the bumper is pressed.]
    drive [forward v]
    forever
    if <[LeftBumper v] pressed?> then
    drive [reverse v] for (200) [mm v] ▶
    turn [right v] for (360) degrees ▶
    end
    stop driving
    end

if / else#

The if / else C block determines which set of blocks runs based on whether the condition is True or False.

if then else block#
    if <> then
    else
    end

Parameters

Description

condition

An expression or variable that is checked when the statement runs. If it is True, the blocks inside the if block will run. If it is False, it will runs the blocks inside the else block.

Example

When started, continuously checks if the screen is pressed. If pressed, displays an excited emoji looking forward; otherwise, displays a bored emoji looking forward.#
    when started :: hat events
    [If bumper pressed, reverse and turn right.]
    forever
    if <[LeftBumper v] pressed?> then
        drive [reverse v] for (100) [mm v] ▶
        turn [right v] for (90) degrees ▶
    else
        drive [forward v]
    end

if / else if / else#

The if / else if / else expandable C block selects which set of blocks runs based on conditions:

  • if runs its block of code if the condition evaluates as True.

  • else if checks additional conditions only if all previous conditions evaluated as False. Multiple else if statements can be used.

  • else runs its block of code only if none of the previous conditions evaluated as True.

if else if else block#
    if <> then
    else if <> then
    else 
    end

Parameters

Description

condition

An expression or variable that is checked when the statement runs. The first condition that is True runs that set of blocks. If all conditions evaluate as False, the blocks inside the else block will run.

Example

When the controller’s axis 1 position changes, moves forward if pushed forward, moves in reverse if pulled backward, and stops when neutral.#
    when started :: hat events
    [Turn right if the an Eye Sensor detects red, left if it detects green, and continue driving if anything else.]
    forever
        if <[FrontEye v] detects [red v]?> then
            turn [right v] for (90) degrees ▶
        else if <[FrontEye v] detects [green v]?> then
            turn [left v] for (90) degrees ▶
        else
            drive [forward v]
        end
    end

break#

The break stack block exits a loop immediately. This block can be used inside repeat, repeat until, while, and forever blocks. Break is useful when a loop needs to stop early based on something that happens during the project, like a button being pressed or a sensor detecting an object.

break stack block#
    break

Parameters

Description

This block has no parameters.

Example

When started, flashes LEDs red and green every 0.5 seconds until the screen is pressed, then stops.#
    when started :: hat events
    [Stop turning after a button is pressed.]
    forever
    drive [forward v]
    if <[LeftBumper v] pressed?> then
    break
    end
    end
    stop driving

stop project#

The stop project stack block ends a running project.

stop project block#
    stop project

Parameters

Description

This block has no parameters.

Example

When started, flashes LEDs red and green every 0.5 seconds until the screen is pressed, then stops the project.#
    when started :: hat events
    [Stop the project entirely after a button is pressed.]
    forever
    drive [forward v]
    if <[LeftBumper v] pressed?> then
    stop project
    end
    end