Screen#

Introduction#

The VEX AIM Coding Robot’s screen provides blocks for displaying text, managing the cursor, drawing shapes, and handling touch interactions. Below is a list of all available blocks, grouped by functionality:

Cursor Print - Manage text display using a row-and-column cursor system.

XY Print - Print text at pixel-based coordinates.

  • print at – Displays text at a specified x and y coordinate.

  • set screen origin – Changes the origin (0, 0) used for drawing and printing.

Settings - Customize text formatting and screen display.

  • clear screen – Erases all text and drawings from the screen.

  • fill screen – Erases all text and drawings from the screen, then sets the screen’s background color.

  • set font – Changes the font type and size for text display.

  • set print precision – Adjusts the amount of decimal places for printed numbers.

  • set pen width – Adjusts the thickness of drawn lines.

  • set pen / font color – Changes the color for text and drawings.

  • set fill color – Defines the fill color for shapes.

Draw - Create graphics and visual elements.

Touch - Detect screen interactions.

Cursor Print#

print#

The print block displays text on the robot’s screen at the current cursor position and font.

print stack block#
    print [VEXcode] on screen ▶

Parameters

Description

value

The text, number, or variable value to display on the screen.

expanding arrow

Expand the block to read and set cursor to next row and make the cursor move to the next row after this block.

Example

When started, displays the message ‘Hello, Robot!’ at the starting cursor position on the screen.#
    when started :: hat events
    [Display a message at the starting cursor position.]
    print [Hello, Robot!] on screen ▶

Shows the robot.screen.print method with the word "Hello Robot!"

set cursor to row column#

When using the set cursor to row column block, the cursor is placed at a specific row and column on the screen. How many rows and columns can comfortably fit depends on the selected font. With the default monospaced medium font, up to 8 rows and 13 columns can be displayed clearly. Text placed beyond this range may be cut off or become difficult to read.

Monospaced fonts have characters that are all the same width, making text placement consistent. In contrast, proportional fonts vary in character width, so some letters take up more space than others. However, regardless of which type is used, the set cursor to row column block positions the cursor based on row and column size, not font style. The font size can be adjusted using the set font block.

Set cursor stack block#
    set cursor to row [1] column [1] on screen

Parameters

Description

row

The row of the cursor.

column

The column of the cursor.

Examples

When started, moves the cursor to row 3, column 2 on the screen and prints ‘Row 3, Column 2’.#
    when started :: hat events
    [Display text starting at Row 3 Column 2.]
    set cursor to row (3) column (2) on screen
    print [Row 3, Column 2] on screen ▶

Shows the robot.screen.print_at method with Row 3, Column 2 printed at the row 3 column 2

    when started :: hat events
    [Display cargo amounts in an organized list.]
    set font to [proportional v] [large v] on screen
    print [Sports Balls] on screen ◀ and set cursor to next row
    print [Orange Barrels] on screen ◀ and set cursor to next row
    print [Blue Barrels] on screen ▶
    set cursor to row [1] column [11] on screen
    print [2] on screen ▶
    set cursor to row [2] column [11] on screen
    print [3] on screen ▶
    set cursor to row [3] column [11] on screen
    print [3] on screen ▶

A dark blue circular background displays three lines of white text, listing Sports Balls 2, Orange Barrels 3, and Blue Barrels 3. The numbers are aligned to the right of each label.

    when started :: hat events
    [Display the ID of the detected AprilTag.]
    set font to [proportional v] [extra large v] on screen
    forever
    clear screen
    print [AprilTag] on screen ▶
    get [all AprilTags v] data from AI Vision
    if <AI Vision object exists?> then
    set cursor to row [3] column [4] on screen
    print (AI Vision object [tagID v]) on screen ▶
    end
    wait [0.1] seconds

A dark blue circular background displays white text centered in the image, reading AprilTag on the first line and 4 on the second line.

set cursor to next row#

The set cursor to next row block moves the cursor to column 1 on the next row on the robot’s screen.

set cursor to next row stack block#
    set cursor to next row on screen

Parameters

Description

This block has no parameters.

Example

When started, prints ‘Line 1’ on the screen, moves the cursor to the next row, and then prints ‘Line 2’.#
    when started :: hat events
    [Display two lines of text.]
    print [Line 1] on screen ▶
    set cursor to next row on screen
    print [Line 2] on screen ▶

Shows the robot.screen.next_row method with Line 1 and Line 2 printed on the robot screen in line 1 and line 2 respectively.

clear row#

The clear row block clears a row of text on the robot’s screen.

Clear row stack block#
    clear row [1] on screen

Parameters

Description

row

The row number to clear.

Example

When started, prints text on two rows. The first row remains, while the second row disappears after 3 seconds.#
    when started :: hat events
    [Display text on two rows.]
    print [This text stays] on screen ▶
    set cursor to next row on screen
    print [This text disappears] on screen ▶
    wait [3] seconds
    clear row [2] on screen

screen cursor column#

The screen cursor column block returns the column number where text will be printed as an integer.

screen cursor column reporter block#
    (screen cursor column)

Parameters

Description

This block has no parameters.

Example

When started, moves the cursor to row 3, column 2 on the screen and prints the current cursor column number.#
    when started :: hat events
    [Display the cursor's current column.]
    set cursor to row [3] column [2] on screen
    print (screen cursor column) on screen ▶

Shows the robot.screen.print_at method by showing column number 2 when you set curosr to 3,2

screen cursor row#

The screen cursor row block returns the row number where text will be printed as an integer.

screen cursor row reporter block#
    (screen cursor row)

Parameters

Description

This block has no parameters.

Example

When started, moves the cursor to row 6, column 2 on the screen and prints the current cursor row number.#
    when started :: hat events
    [Display the cursor's current row.]
    set cursor to row [3] column [2] on screen
    print (screen cursor row) on screen ▶

Shows the robot.screen.print_at method by showing row number 3 when you set curosr to 3,2

XY Print#

set screen origin#

The set screen origin sets the origin (0,0) used for drawing or printing on the robot’s screen. By default, drawing or printing blocks consider the top left corner of the screen as the origin. This block can reset the origin to an alternate (x, y) screen coordinate location.

set screen origin stack block#
    set screen origin x: [0] y: [0]

Parameters

Description

x

The x-coordinate in pixels to set the new origin to.

y

The y-coordinate in pixels to set the new origin to.

Example

When started, sets the screen origin to (120, 120) and draws a rectangle at the new origin with top-left corner at (0,0), width 80 pixels, and height 40 pixels.#
    when started :: hat events
    [Set the origin to the center of the screen.]
    set screen origin x: [120] y: [120]
    [Draw a rectangle at the new origin.]
    draw rectangle [0] [0] [80] [40] on screen

The robot’s screen shows a white rectangle with the upper left corner in the center.

Settings#

clear screen#

The clear screen block clears all drawings and text from the robot’s screen and resets the cursor position to row 1, column 1.

clear screen block#
    clear screen

Parameters

Description

This block has no parameters.

Example

When started, draws a circle with center (120,120) and radius 40 pixels. After 2 seconds, the screen is cleared.#
    when started :: hat events
    [Draw a circle, and clear it after 2 seconds.]
    draw circle [120] [120] [40] on screen
    wait [2] seconds
    clear screen

fill screen#

The fill screen block clears the robot’s screen of all drawings and text, then changes the background to a specified color.

The fill screen block#
    fill screen with [red v]

Parameters

Description

color

The color to change the background to:

  • red
  • green
  • blue
  • black
  • white
  • yellow
  • orange
  • purple
  • cyan

Example

    when started :: hat events
    [Say "Hello" then turn screen yellow.]
    print [Hello] on screen ▶
    wait [2] seconds
    fill screen with [yellow v]

set font#

The set font block sets the font and size used for displaying text on the robot’s screen. This font will apply to all subsequently printed text.

set font stack block#
    set font to [monospaced v] [super small v] on screen

Parameters

Description

type

The font type:

  • monospaced
  • proportional

size

The font size (shown below):

  • super small
  • extra small
  • small
  • medium
  • large
  • extra large
  • super large

The robot screen printed numbers and letters with MONO 12 font. It shows A-Z. On the bottom of the screen, it is 26 across and 15 rows.
monospaced super small

The robot screen printed numbers and letters with MONO 15 font. It shows A-T. On the bottom of the screen, it is 20 across and 12 rows.
monospaced extra small

The robot screen printed numbers and letters with MONO 20 font. It shows A-P. On the bottom of the screen, it is 16 across and 9 rows.
monospaced small

The robot screen printed numbers and letters with MONO 24 font. It shows A-M. On the bottom of the screen, it is 13 across and 8 rows.
monospaced medium

The robot screen printed numbers and letters with MONO 30 font. It shows A-K. On the bottom of the screen, it is 11 across and 6 rows.
monospaced large

The robot screen printed numbers and letters with MONO 40 font. It shows A-K. On the bottom of the screen, it is 8 across and 5 rows.
monospaced extra large

The robot screen printed numbers and letters with MONO 60 font. It shows 1-6. On the bottom of the screen, it is 3 rows.
monospaced super large

The robot screen printed numbers and letters with PROP 20 font. It shows A-S. On the bottom of the screen, it is 8 across and 9 rows.
proportional small

The robot screen printed numbers and letters with PROP 30 font. It shows A-M. On the bottom of the screen, it is 15 across and 6 rows.
proportional large

The robot screen printed numbers and letters with PROP 40 font. It shows A-M. On the bottom of the screen, it is 15 across and 6 rows.
proportional extra large

The robot screen printed numbers and letters with PROP 60 font. It shows 1-7. On the bottom of the screen, it is 7 across and 3 rows.
proportional super large

Example

When started, sets the font to ‘monospaced extra large’ and prints ‘VEX’ on the screen.#
    when started :: hat events
    [Display text using a larger font]
    set font to [monospaced v] [extra large v] on screen
    print [VEX] on screen ▶

The robot’s screen shows the word VEX in Mono 40 font in the upper left corner.

set print precision#

The set print precision block sets the precision formatting used for displaying numbers on the robot’s screen. This print precision will apply to all subsequently printed numbers.

set print precision stack block#
    set print precision to [0.1 v] on screen

Parameters

Description

precision

Sets the print precision to:

  • 1
  • 0.1
  • 0.01
  • 0.001
  • All Digits

Example

When started, sets print precision to two decimal places and prints 1/3 as 0.33 on the screen.#
    when started :: hat events
    [Print 1/3 as 0.33.]
    set print precision to [0.01 v] on screen
    print ([1] [math_division v] [3]) on screen ▶

The robot’s screen shows a white rectangle with a wide border drawn centered across the top.

set pen width#

The set pen width block sets the pen width used for drawing lines and shapes.

set pen width block#
    set pen width to [10] on screen

Parameters

Description

width

The pen width in pixels in a range from 0 to 32.

Example

When started, sets the pen width to 10 pixels and draws a rectangle with the top-left corner at (50,50), width 130 pixels, and height 60 pixels.#
    when started :: hat events
    [Draw a rectangle with a pen width of 10.]
    set pen width to [10] on screen
    draw rectangle [50] [50] [130] [60] on screen

The robot’s screen shows a red rectangle with a thin border drawn centered across the top.

set pen / font color#

The set pen / font color block sets the pen color used for drawing lines, shapes, and text on the robot’s screen.

set pen font color#
    set pen / font color to [red v] on screen

Parameters

Description

color

Sets the pen color to:

  • red
  • green
  • blue
  • black
  • white
  • yellow
  • orange
  • purple
  • cyan
  • transparent

Example

When started, sets the pen color to red and draws a rectangle with the top-left corner at (50, 50), width 130 pixels, and height 60 pixels.#
    when started :: hat events
    [Draw a rectangle with a red pen.]
    set pen / font color to [red v] on screen
    draw rectangle [50] [50] [130] [60] on screen

The robot’s screen shows a red rectangle with a thin border drawn centered across the top.

set fill color#

The set fill color block sets the fill color used when shapes are drawn.

set fill color stack block#
    set fill color to [red v] on screen

Parameters

Description

color

Sets the fill color to:

  • red
  • green
  • blue
  • black
  • white
  • yellow
  • orange
  • purple
  • cyan
  • transparent

Examples

When started, sets the fill color to orange and draws two rectangles. The first is at (50, 50), and the second is at (50, 130), both with a width of 100 pixels and a height of 60 pixels.#
    when started :: hat events
    [Draw two orange rectangles.]
    set fill color to [orange v] on screen
    draw rectangle [50] [50] [100] [60] on screen
    draw rectangle [50] [130] [100] [60] on screen

The robot’s screen shows two parallel orange rectangles with white thin borders drawn on the screen, slightly off center to the left.


When started, sets the background fill color to purple and prints ‘Highlight’ on the screen.#
    when started :: hat events
    [Display text with a purple background.]
    set fill color to [purple v] on screen
    print [Highlight] on screen ▶

The robot’s screen shows the word Highlight in white text with purple highlighting around it printed beginning in the upper left corner.

Draw#

show image file#

The show image file block draws a custom user-uploaded image on the robot’s screen.

show user image stack block#
    show image file [1 v]

Parameters

Description

image slot number

The custom image to use, number 1 to 10. The image number aligns with the number shown in the AIM control panel.

Example

todo#
    when started :: hat events
    [Draw uploaded Image 1.]
    show image file [1 v]

draw pixel#

The draw pixel block draws a pixel at the specified (x, y) screen coordinate in the current pen color.

draw pixel stack block#
    draw pixel [0] [0] on screen

Parameters

Description

x

The x-coordinate to draw the pixel.

y

The y-coordinate to draw the pixel.

Example

When started, draws a pixel at the center of the screen at coordinates (120, 120).#
    when started :: hat events
    [Draw a pixel at the center of the screen.]
    draw pixel [120] [120] on screen

The robot’s screen shows a single pixel printed in white in the center.

draw line#

The draw line block draws a line from the first specified screen coordinate (x1, y1) to the second specified screen coordinate (x2, y2) using the current pen width and pen color.

draw line stack block#
    draw line [0] [0] [10] [10] on screen

Parameters

Description

x1

The x-coordinate in pixels of the start of the line.

y1

The y-coordinate in pixels of the start of the line.

x2

The x-coordinate in pixels of the end of the line.

y2

The y-coordinate in pixels of the end of the line.

Example

When started, draws a diagonal line from the top-left corner (0,0) to the bottom-right corner (240,240) of the screen.#
    when started :: hat events
    [Draw a line from the top left to bottom right of the screen.]
    draw line [0] [0] [240] [240] on screen

The robot’s screen shows a thin diagonal line across the center, from the upper left corner to the lower right corner.

draw rectangle#

The draw rectangle block draws a rectangle using the current pen width, pen color, and fill colors.

draw rectangle block#
    draw rectangle [0] [0] [10] [10] on screen

Parameters

Description

x

The x-coordinate in pixels of the top-left corner of the rectangle.

y

The y-coordinate in pixels of the top-left corner of the rectangle.

width

The width of the rectangle in pixels.

height

The height of the rectangle in pixels.

Example

When started, draws a rectangle on the screen with the top-left corner at (50,50), width of 130 pixels, and height of 60 pixels.#
    when started :: hat events
    [Draw a rectangle on the screen.]
    draw rectangle [50] [50] [130] [60] on screen

The robot’s screen shows a red rectangle with a thin white border drawn across the top.

draw circle#

The draw circle block draws a circle using the current pen width, pen color, and fill colors.

draw circle stack block#
    draw circle [0] [0] [10] on screen

Parameters

Description

x

The x-coordinate in pixels of the center of the circle.

y

The y-coordinate in pixels of the center of the circle.

radius

The radius of the circle in pixels.

Example

When started, draws a circle on the screen with the center at (120,120) and a radius of 40 pixels.#
    when started :: hat events
    [Draw a rectangle on the screen.]
    draw circle [120] [120] [40] on screen

The robot’s screen shows a green circle with a thin white border drawn in the center.

Touch#

screen pressed?#

The screen pressed? block returns if the robot’s screen is currently being pressed or not pressed. This block returns a Boolean value:

  • True - Screen is currently being pressed

  • False - Screen is not being pressed

screen pressed boolean block#
    <screen pressed?>

Parameters

Description

This block has no parameters.

Example

When started, continuously checks if the screen is pressed. If pressed, all LEDs turn white; otherwise, they remain off.#
    when started :: hat events
    [Turn LEDs white only when the screen is pressed.]
    forever 
        if <screen pressed?> then
            set [lightall v] LED color to [white v]
        else
            set [lightall v] LED color to [off v]
        end
    end

screen position#

The screen position block returns an integer showing the x- and y-coordinate (in pixels) where the screen was pressed. The return value for x is between 0 (left) and 240 (right). The return value for y is between 0 (top) and 240 (bottom).

A top down view of a turned-off AIM Robot that displays a white square overlay with its corners labeled with coordinates (0,0), (240,0), (0,240), and (240,240). A red circle is centered within the square, and a white dashed crosshair intersects at the middle of the image, marked with the coordinates 120,120.

screen position reporter block#
    (screen [x v] position)

Parameters

Description

coordinate

The coordinate of the last screen press in pixels:

  • x - The horizontal position
  • y - The vertical position

Example

When started, continuously checks for screen presses. If pressed, clears the screen and prints the x- and y-coordinates of the touch position.#
    when started :: hat events
    [Display the x and y coordinate of where the screen is pressed.]
    forever 
        if <screen pressed?> then
            clear screen
            print (screen [x v] position) on screen ▶
            set cursor to next row on screen
            print (screen [y v] position) on screen ▶
        end
    end

when screen event#

The when screen event block is to be called when the robot’s screen is pressed or is no longer being pressed.

When screen event hat block#
    when screen [pressed v] :: hat events

Parameters

Description

action

Determines when the attached stack of blocks will execute:

  • pressed
  • released

Example

When the screen is pressed, all LEDs turn green.#
    when screen [pressed v] :: hat events
        [Set the LEDs to green when the screen is pressed.]
        set [lightall v] LED color to [green v]