Libraries.Robots.Lego.Screen Documentation

This class is an object representation of a LEGO Mindstorms EV3 LCD screen. It is used to display text and shapes on the screen. When using coordinates, the origin (0, 0) represents the bottom-left corner of the screen.

Example Code

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

class Main
action Main
    Button button
    Screen screen

    screen:DrawRectangleFull(40, 80, 20, 20)
    screen:DrawRectangleFull(116, 80, 20, 20)
    screen:DrawLine(40, 40, 136, 40)
    screen:DrawLine(40, 40, 40, 50)
    screen:DrawLine(136, 40, 136, 50)
    button:WaitForButtonPress()
end
end

Inherits from: Libraries.Language.Object

Actions Documentation

Clear()

This action removes everything from the screen.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Screen screen
Button button

screen:DrawCircleFull(50, 50, 30)
button:WaitForButtonPress()
screen:Output("Hello!", 0)
button:WaitForButtonPress()
screen:Clear()      //removes anything on the screen
screen:OutputCenter("Cleared!", 3)
button:WaitForButtonPress()

Compare(Libraries.Language.Object object)

This action compares two object hash codes and returns an integer. The result is larger if this hash code is larger than the object passed as a parameter, smaller, or equal. In this case, -1 means smaller, 0 means equal, and 1 means larger. This action was changed in Quorum 7 to return an integer, instead of a CompareResult object, because the previous implementation was causing efficiency issues.

Parameters

Return

integer: The Compare result, Smaller, Equal, or Larger.

Example

Object o
Object t
integer result = o:Compare(t) //1 (larger), 0 (equal), or -1 (smaller)

DrawCircleFull(integer x, integer y, integer radius)

This action draws a full circle on the screen.

Parameters

  • integer x: specifies the center x coordinate of the circle.
  • integer y: specifies the center y coordinate of the circle.
  • integer radius: specifies how many pixels outward from the center the circle should be drawn. For example, a radius of 10 will draw 10 pixels outward from the center in every direction.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Button button
Screen screen

screen:DrawCircleFull(50, 80, 20)      //draw left eye
screen:DrawCircleFull(126, 80, 20)     //draw right eye

repeat 3 times
    screen:EraseEllipseFull(50, 120, 20, 10)    //erase previous left eyebrow
    screen:EraseEllipseFull(126, 120, 20, 10)   //erase previous right eyebrow
    screen:EraseCircleFull(86, 40, 25)          //erase previous mouth
    screen:DrawEllipseFull(50, 110, 20, 10)     //draw new left eyebrow
    screen:DrawEllipseFull(126, 110, 20, 10)    //draw new right eyebrow
    screen:DrawCircleFull(86, 40, 15)           //draw new mouth
    button:WaitForButtonPress()                 //toggle the face

    screen:EraseEllipseFull(50, 110, 20, 10)    //erase previous left eyebrow
    screen:EraseEllipseFull(126, 110, 20, 10)   //erase previous right eyebrow
    screen:EraseCircleFull(86, 40, 15)          //erase previous mouth
    screen:DrawEllipseFull(50, 120, 20, 10)     //draw new left eyebrow
    screen:DrawEllipseFull(126, 120, 20, 10)    //draw new right eyebrow
    screen:DrawCircleFull(86, 40, 25)           //draw new mouth
    button:WaitForButtonPress()                 //toggle the face
end

DrawCircleOutline(integer x, integer y, integer radius)

This action draws a circle outline on the screen.

Parameters

  • integer x: specifies the center x coordinate of the circle.
  • integer y: specifies the center y coordinate of the circle.
  • integer radius: specifies how many pixels outward from the center the circle should be drawn. For example, a radius of 10 will draw the circle outline 10 pixels outward from the center in every direction.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawCircleOutline(89, 64, 20) //circle's center is at 89, 64 with a radius of 20
utility:DelayMilliseconds(500)
screen:DrawCircleOutline(89, 64, 30)
utility:DelayMilliseconds(500)
screen:DrawCircleOutline(89, 64, 40)
button:WaitForButtonPress()

DrawEllipseFull(integer x, integer y, integer width, integer height)

This action draws a filled ellipse on the screen.

Parameters

  • integer x: specifies the center x coordinate of the ellipse.
  • integer y: specifies the center y coordinate of the ellipse.
  • integer width: specifies how wide the ellipse should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the ellipse should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Button button
Screen screen

screen:DrawEllipseFull(50, 80, 20, 20)      //draw left eye
screen:DrawEllipseFull(126, 80, 20, 20)     //draw right eye

repeat 3 times
    screen:EraseEllipseFull(50, 115, 20, 10)    //erase previous left eyebrow
    screen:EraseEllipseFull(126, 115, 20, 10)   //erase previous right eyebrow
    screen:EraseEllipseFull(88, 35, 96, 30)     //erase previous mouth
    screen:DrawEllipseFull(50, 105, 20, 10)     //draw new left eyebrow
    screen:DrawEllipseFull(126, 105, 20, 10)    //draw new right eyebrow
    screen:DrawEllipseFull(88, 35, 96, 10)      //draw new mouth
    button:WaitForButtonPress()                 //toggle the face

    screen:EraseEllipseFull(50, 105, 20, 10)    //erase previous left eyebrow
    screen:EraseEllipseFull(126, 105, 20, 10)   //erase previous right eyebrow
    screen:EraseEllipseFull(88, 35, 96, 10)     //erase previous mouth
    screen:DrawEllipseFull(50, 115, 20, 10)     //draw new left eyebrow
    screen:DrawEllipseFull(126, 115, 20, 10)    //draw new right eyebrow
    screen:DrawEllipseFull(88, 35, 96, 30)      //draw new mouth
    button:WaitForButtonPress()                 //toggle the face
end

DrawEllipseOutline(integer x, integer y, integer width, integer height)

This action draws an ellipse outline on the screen.

Parameters

  • integer x: specifies the center x coordinate of the ellipse.
  • integer y: specifies the center y coordinate of the ellipse.
  • integer width: specifies how wide the ellipse should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the ellipse should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawEllipseOutline(89, 64, 20, 10) //ellipse's center is at 89, 64 with a width of 20 and height of 10
utility:DelayMilliseconds(500)
screen:DrawEllipseOutline(89, 64, 40, 20)
utility:DelayMilliseconds(500)
screen:DrawEllipseOutline(89, 64, 60, 30)
utility:DelayMilliseconds(500)
screen:DrawEllipseOutline(89, 64, 80, 40)
utility:DelayMilliseconds(500)
screen:DrawEllipseOutline(89, 64, 100, 50)
button:WaitForButtonPress()

DrawLine(integer xStart, integer yStart, integer xEnd, integer yEnd)

This action draws a line on the screen.

Parameters

  • integer xStart: specifies the x coordinate where the line should start at.
  • integer yStart: specifies the y coordinate where the line should start at.
  • integer xEnd: specifies the x coordinate where the line should end at.
  • integer yEnd: specifies the y coordinate where the line should end at.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawLine(30, 30, 89, 98)
utility:DelayMilliseconds(500)
screen:DrawLine(89, 98, 148, 30)
utility:DelayMilliseconds(500)
screen:DrawLine(148, 30, 30, 30)
button:WaitForButtonPress()

DrawPixel(integer x, integer y)

This action places a pixel on the screen

Parameters

  • integer x: specifies the x coordinate of the pixel being drawn.
  • integer y: specifies the y coordinate of the pixel being drawn.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility

Screen screen
Utility utility

integer y = 0
repeat while y <= 127 //top of the screen
    integer x = 0
    repeat while x <= 177 //right side of the screen
        screen:DrawPixel(x, y)
        utility:DelayMilliseconds(1)
        x = x + 1
    end
    y = y + 1
end

DrawRectangleFull(integer xBottomLeft, integer yBottomLeft, integer width, integer height)

This action draws a filled in rectangle on screen.

Parameters

  • integer xBottomLeft: specifies the x coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer yBottomLeft: specifies the y coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer width: specifies how wide the rectangle should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the rectangle should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Button button
Screen screen

screen:DrawRectangleFull(40, 80, 20, 20)    //draw left eye
screen:DrawRectangleFull(116, 80, 20, 20)   //draw right eye

repeat 3 times
    screen:EraseRectangleFull(40, 120, 20, 10)  //erase previous left eyebrow
    screen:EraseRectangleFull(116, 120, 20, 10) //erase previous right eyebrow
    screen:EraseRectangleFull(40, 30, 96, 30)   //erase previous mouth
    screen:DrawRectangleFull(40, 110, 20, 10)   //draw new left eyebrow
    screen:DrawRectangleFull(116, 110, 20, 10)  //draw new right eyebrow
    screen:DrawRectangleFull(40, 40, 96, 10)    //draw new mouth
    button:WaitForButtonPress()                 //toggle the face

    screen:EraseRectangleFull(40, 110, 20, 10)  //erase previous left eyebrow
    screen:EraseRectangleFull(116, 110, 20, 10) //erase previous right eyebrow
    screen:EraseRectangleFull(40, 40, 96, 10)   //erase previous mouth
    screen:DrawRectangleFull(40, 120, 20, 10)   //draw new left eyebrow
    screen:DrawRectangleFull(116, 120, 20, 10)  //draw new right eyebrow
    screen:DrawRectangleFull(40, 30, 96, 30)    //draw new mouth
    button:WaitForButtonPress()                 //toggle the face
end

DrawRectangleOutline(integer xBottomLeft, integer yBottomLeft, integer width, integer height)

This action draws an outline of a rectangle on the screen.

Parameters

  • integer xBottomLeft: specifies the x coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer yBottomLeft: specifies the y coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer width: specifies how wide the rectangle should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the rectangle should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawRectangleOutline(30, 30, 118, 68)    //rectangle's bottom left corner is 30, 30 with a width of 118 and height of 68
utility:DelayMilliseconds(500)
screen:DrawRectangleOutline(40, 40, 98, 48)     //a smaller rectangle
utility:DelayMilliseconds(500)
screen:DrawRectangleOutline(50, 50, 78, 28)     //an even smaller rectangle
button:WaitForButtonPress()

Equals(Libraries.Language.Object object)

This action determines if two objects are equal based on their hash code values.

Parameters

Return

boolean: True if the hash codes are equal and false if they are not equal.

Example

use Libraries.Language.Object
use Libraries.Language.Types.Text
Object o
Text t
boolean result = o:Equals(t)

EraseCircleFull(integer x, integer y, integer radius)

This action erases pixels in the shape of a full circle from the screen.

Parameters

  • integer x: specifies the center x coordinate of the circle.
  • integer y: specifies the center y coordinate of the circle.
  • integer radius: specifies how many pixels outward from the center the circle should be erased. For example, a radius of 10 will erase 10 pixels outward from the center in every direction.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Button button
Screen screen

screen:DrawRectangleFull(0, 0, 177, 127)    //make the screen black
screen:EraseCircleFull(50, 80, 20)          //erase a left eye from screen
screen:EraseCircleFull(126, 80, 20)         //erase a right eye from screen

repeat 3 times
    screen:DrawEllipseFull(50, 120, 20, 10)     //fill in previous left eyebrow
    screen:DrawEllipseFull(126, 120, 20, 10)    //fill in previous right eyebrow
    screen:DrawCircleFull(86, 40, 25)           //fill in previous mouth
    screen:EraseEllipseFull(50, 110, 20, 10)    //erase new left eyebrow from screen
    screen:EraseEllipseFull(126, 110, 20, 10)   //erase new right eyebrow from screen
    screen:EraseCircleFull(86, 40, 15)          //erase new mouth from screen
    button:WaitForButtonPress()                 //toggle the face

    screen:DrawEllipseFull(50, 110, 20, 10)     //fill in previous left eyebrow
    screen:DrawEllipseFull(126, 110, 20, 10)    //fill in previous right eyebrow
    screen:DrawCircleFull(86, 40, 15)           //fill in previous mouth
    screen:EraseEllipseFull(50, 120, 20, 10)    //erase new left eyebrow from screen
    screen:EraseEllipseFull(126, 120, 20, 10)   //erase new right eyebrow from screen
    screen:EraseCircleFull(86, 40, 25)          //erase new mouth from screen
    button:WaitForButtonPress()                 //toggle the face
end

EraseCircleOutline(integer x, integer y, integer radius)

This action erases pixels in the shape of a circle outline from the screen.

Parameters

  • integer x: specifies the center x coordinate of the circle.
  • integer y: specifies the center y coordinate of the circle.
  • integer radius: specifies how many pixels outward from the center of the circle that should be erased. For example, a radius of 10 will erase the circle outline 10 pixels outward from the center in every direction.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawRectangleFull(0, 0, 177, 127)    //makes the screen black
screen:EraseCircleOutline(89, 64, 20)       //circle's center is at 89, 64 with a radius of 20
utility:DelayMilliseconds(500)
screen:EraseCircleOutline(89, 64, 30)
utility:DelayMilliseconds(500)
screen:EraseCircleOutline(89, 64, 40)
button:WaitForButtonPress()

EraseEllipseFull(integer x, integer y, integer width, integer height)

This action erases a pixels in the shape of a filled ellipse from the screen.

Parameters

  • integer x: specifies the center x coordinate of the ellipse.
  • integer y: specifies the center y coordinate of the ellipse.
  • integer width: specifies how wide the ellipse should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the ellipse should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Button button
Screen screen

screen:DrawRectangleFull(0, 0, 177, 127)    //make the screen black
screen:EraseEllipseFull(50, 80, 20, 20)     //erase a left eye from the screen
screen:EraseEllipseFull(126, 80, 20, 20)    //erase a right eye from the screen

repeat 3 times
    screen:DrawEllipseFull(50, 115, 20, 10)     //fill in previous left eyebrow
    screen:DrawEllipseFull(126, 115, 20, 10)    //fill in previous right eyebrow
    screen:DrawEllipseFull(88, 35, 96, 30)      //fill in previous mouth
    screen:EraseEllipseFull(50, 105, 20, 10)    //erase a new left eyebrow from the screen
    screen:EraseEllipseFull(126, 105, 20, 10)   //erase a new right eyebrow from the screen
    screen:EraseEllipseFull(88, 35, 96, 10)     //erase a new mouth from the screen
    button:WaitForButtonPress()                 //toggle the face

    screen:DrawEllipseFull(50, 105, 20, 10)     //fill in previous left eyebrow
    screen:DrawEllipseFull(126, 105, 20, 10)    //fill in previous right eyebrow
    screen:DrawEllipseFull(88, 35, 96, 10)      //fill in previous mouth
    screen:EraseEllipseFull(50, 115, 20, 10)    //erase a new left eyebrow from the screen
    screen:EraseEllipseFull(126, 115, 20, 10)   //erase a new right eyebrow from the screen
    screen:EraseEllipseFull(88, 35, 96, 30)     //erase a new mouth from the screen
    button:WaitForButtonPress()                 //toggle the face
end

EraseEllipseOutline(integer x, integer y, integer width, integer height)

This action erases pixels in the shape of an ellipse outline from the screen.

Parameters

  • integer x: specifies the center x coordinate of the ellipse.
  • integer y: specifies the center y coordinate of the ellipse.
  • integer width: specifies how wide the ellipse should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the ellipse should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawRectangleFull(0, 0, 177, 127)    //make the screen black
screen:EraseEllipseOutline(89, 64, 20, 10) //ellipse's center is at 89, 64 with a width of 20 and height of 10
utility:DelayMilliseconds(500)
screen:EraseEllipseOutline(89, 64, 40, 20)
utility:DelayMilliseconds(500)
screen:EraseEllipseOutline(89, 64, 60, 30)
utility:DelayMilliseconds(500)
screen:EraseEllipseOutline(89, 64, 80, 40)
utility:DelayMilliseconds(500)
screen:EraseEllipseOutline(89, 64, 100, 50)
button:WaitForButtonPress()

ErasePixel(integer x, integer y)

This action removes a single pixel from the screen.

Parameters

  • integer x: specifies the x coordinate of the pixel being erased.
  • integer y: specifies the y coordinate of the pixel being erased.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Screen screen
Button button

screen:DrawCircleFull(50, 50, 25)
screen:ErasePixel(50, 50)   //removes the center pixel of the circle
screen:ErasePixel(51, 51)
screen:ErasePixel(49, 49)
screen:ErasePixel(51, 49)
screen:ErasePixel(49, 51)
button:WaitForButtonPress()

EraseRectangleFull(integer xBottomLeft, integer yBottomLeft, integer width, integer height)

This action erases pixels in the shape of a full rectangle from the screen.

Parameters

  • integer xBottomLeft: specifies the x coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer yBottomLeft: specifies the y coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer width: specifies how wide the ellipse should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the ellipse should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Screen screen
Button button

screen:DrawRectangleFull(0, 0, 177, 127)    //make the screen black
screen:EraseRectangleFull(40, 80, 20, 20)    //draw left eye
screen:EraseRectangleFull(116, 80, 20, 20)   //draw right eye

repeat 3 times
    screen:DrawRectangleFull(40, 120, 20, 10)  //erase previous left eyebrow
    screen:DrawRectangleFull(116, 120, 20, 10) //erase previous right eyebrow
    screen:DrawRectangleFull(40, 30, 96, 30)   //erase previous mouth
    screen:EraseRectangleFull(40, 110, 20, 10)   //draw new left eyebrow
    screen:EraseRectangleFull(116, 110, 20, 10)  //draw new right eyebrow
    screen:EraseRectangleFull(40, 40, 96, 10)    //draw new mouth
    button:WaitForButtonPress()                 //toggle the face

    screen:DrawRectangleFull(40, 110, 20, 10)  //erase previous left eyebrow
    screen:DrawRectangleFull(116, 110, 20, 10) //erase previous right eyebrow
    screen:DrawRectangleFull(40, 40, 96, 10)   //erase previous mouth
    screen:EraseRectangleFull(40, 120, 20, 10)   //draw new left eyebrow
    screen:EraseRectangleFull(116, 120, 20, 10)  //draw new right eyebrow
    screen:EraseRectangleFull(40, 30, 96, 30)    //draw new mouth
    button:WaitForButtonPress()                 //toggle the face
end

EraseRectangleOutline(integer xBottomLeft, integer yBottomLeft, integer width, integer height)

This action erases pixels in the shape of a rectangle outline from the screen.

Parameters

  • integer xBottomLeft: specifies the x coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer yBottomLeft: specifies the y coordinate of the rectangle's bottom left corner where the rectangle starts from.
  • integer width: specifies how wide the rectangle should be, in pixels. The visible screen pixels for width range from 0 to 177.
  • integer height: specifies how tall the rectangle should be, in pixels. The visible screen pixels for height range from 0 to 127.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Utility
use Libraries.Robots.Lego.Button

Screen screen
Utility utility
Button button

screen:DrawRectangleFull(0, 0, 177, 127)     //makes the screen black
utility:DelayMilliseconds(500)
screen:EraseRectangleOutline(30, 30, 118, 68) //rectangle's bottom left corner is 30, 30 with a width of 118 and height of 68
utility:DelayMilliseconds(500)
screen:EraseRectangleOutline(40, 40, 98, 48)
utility:DelayMilliseconds(500)
screen:EraseRectangleOutline(50, 50, 78, 28)
button:WaitForButtonPress()

GetHashCode()

This action gets the hash code for an object.

Return

integer: The integer hash code of the object.

Example

Object o
integer hash = o:GetHashCode()

Output(text message, integer line, integer indent)

This action displays a text message on a specific line of the screen with an indentation.

Parameters

  • text message: is what will be displayed on the screen.
  • integer line: specifies which line number the message will appear on. Valid line numbers are 0 through 7, where 0 is the top line.
  • integer indent: specifies how much of an indent, measured in a character's width (1 character's width = 8 pixels), the message should have. The visible width of the screen ranges from 0 to 177 pixels, but you can use any size indent. Negative values are accepted and shift the text message to the left.

Example

use Libraries.Robots.Lego.Screen
use Libraries.Robots.Lego.Button

Screen screen
Button button

integer indent = 0
integer line = 0
repeat until line = 8
    screen:Output("Indent = " + indent, line, indent) //displays the current indent on screen
    line = line + 1
    indent = indent + 1
end
button:WaitForButtonPress()

Output(text message, integer line)

This action displays a text message on a specific line of the screen.

Parameters