螢幕#

介紹#

螢幕方法控制 VEX AIR 無人機控制器如何在螢幕上顯示文字、數字、圖形和影像,以及如何回應螢幕按鍵。

以下是可用方法清單:

遊標列印 – 顯示文字並管理列印遊標。

  • print – 在目前遊標位置列印文字、數字或變數值。

  • set_cursor – 將遊標移到指定的行和列。

  • next_row – 將遊標移到下一行的第 1 列。

  • clear_row – 清除一行文字。

  • get_row – 傳回要列印文字的行。

  • get_column – 傳回要列印文字的欄位。

XY 列印 – 根據像素座標列印文字。

  • print_at – 在指定的 x 和 y 座標處列印文字、數字或變數值。

  • set_origin – 設定用於基於座標的列印和繪圖的原點。

修改器 – 變更螢幕設定、顏色和繪圖行為。

繪圖-在螢幕上新增圖形和影像。

  • draw_pixel – 在指定的 x 和 y 位置繪製一個像素。

  • draw_line – 在兩點之間繪製一條線。

  • draw_rectangle – 使用目前畫筆和填滿色彩繪製矩形。

  • draw_circle – 使用目前畫筆和填滿色彩繪製一個圓形。

  • show_file – 繪製上傳的影像。

觸控-偵測並回應螢幕按壓。

  • pressing – 返回螢幕目前是否被按下。

  • x_position – 傳回上次畫面所按下的 x 座標。

  • y_position – 傳回最後一次畫面按下的 y 座標。

回調函數-在螢幕被按下或釋放時運行的函數。

  • pressed – 註冊一個在螢幕被按下時要呼叫的函數。

  • released – 註冊一個在螢幕釋放時要呼叫的函數。

遊標列印#

print#

print 在控制器畫面上的目前遊標位置和字型處列印文字、數字或變數值。

用法:
controller.screen.print(text)

參數

描述

text

若要列印在螢幕上的文字、數字或變數值。

sep

可選。列印文字之間的分隔符號。預設值為 sep = ’ ‘

end

可選。附加到最後列印文字之後的字串。預設值為 end = ‘\n’

precision

可選。浮點數列印時保留的小數位數,以整數表示。預設值為 precision = 5

# Display a message at the starting cursor position.
controller.screen.print("Time to fly!")

VEX AIR 無人機控制器畫面的截圖,左上角有白色文字顯示「是時候飛行了!」

# Display the first 2 decimals of pi
controller.screen.print(3.1415, precision = 2)

與上一張截圖相同,左上角文字顯示為 3.14。

set_cursor#

set_cursor 将光标移动到遥控器屏幕上指定的行和列。下一次调用 print 时,将从该位置开始打印。行间距和列间距会根据所选字体进行调整。使用默认的中等大小等宽字体时,屏幕最多可清晰显示 18 行和 53 列。超出此范围的文本可能会被截断或难以阅读。

用法:
controller.screen.set_cursor(row, col)

參數

描述

row

要將遊標移到的行。

column

要將遊標移到的列。

# Display text starting at Row 7 Column 25.
controller.screen.set_cursor(row=7, col=25)
controller.screen.print("Row 7, Column 25")

VEX AIR 無人機控制器螢幕的截圖,螢幕中心附近有白色文字,顯示「第 7 行,第 25 列」。

next_row#

next_row 將遊標移到控制器畫面上下一行的第 1 列。

用法:
controller.screen.next_row()

參數

描述

此方法沒有參數。

# Display two lines of text.
controller.screen.print("Line 1")
controller.screen.next_row()
controller.screen.print("Line 2")

VEX AIR 無人機控制器螢幕的截圖,左上角有白色文字,第一行顯示“第 1 行”,第二行緊隨其後。

clear_row#

clear_row 清除控制器畫面上的一行文字。

用法:
controller.screen.clear_row(row, color)

範圍

描述

row

可選。要清除的行。預設值為目前遊標所在行。

color

可选。应用于已清除行的颜色。如果未指定颜色,则使用 set_fill_color 设置的颜色。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Clear only the second row of text
controller.screen.print("This text stays")
controller.screen.next_row()
controller.screen.print("This text disappears")
wait(3, SECONDS)
controller.screen.clear_row(2)

# Turn the 5th row green.
controller.screen.clear_row(5, GREEN)

get_row#

get_row 傳回要列印文字的目前行,以整數形式傳回。

用法:
controller.screen.get_row()

參數

描述

此方法沒有參數。

# Display the cursor's current row.
controller.screen.set_cursor(row=7, col=25)
controller.screen.print(controller.screen.get_row())

VEX AIR 無人機控制器螢幕的截圖,螢幕中心附近有白色文字顯示“7”,位於第 7 行第 25 列。

get_column#

get_column 傳回要列印文字的目前列,以整數形式傳回。

用法:
controller.screen.get_column()

參數

描述

此方法沒有參數。

# Display the cursor's current column.
controller.screen.set_cursor(row=7, col=25)
controller.screen.print(controller.screen.get_column())

VEX AIR 無人機控制器螢幕的截圖,螢幕中心附近有白色文字“25”,位於第 7 行第 25 列。

XY列印#

set_origin#

set_origin 設定控制器螢幕上用於繪圖和基於座標的列印的原點 (0, 0)。預設情況下,原點位於螢幕左上角。此方法可以將原點重設為螢幕座標系中的其他位置 (x, y)。

用法:
controller.screen.set_origin(x, y)

範圍

描述

x

設定為原點的新 x 座標,以 0 到 640 之間的整數形式給出。

y

設定為原點的新 y 座標,以 0 到 480 之間的整數形式給出。

# Set the origin to the center of the screen.
controller.screen.set_origin(x=320, y=240)

# Draw a rectangle at the new origin.
controller.screen.draw_rectangle(x=0, y=0, width=80, height=40)

VEX AIR 無人機控制器螢幕的截圖,繪製了一個白色矩形,使左上角位於螢幕中心。

修改器#

clear_screen#

clear_screen 清除控制器螢幕上的所有繪圖、文字和影像。

用法:
controller.screen.clear_screen(row, col, color)

範圍

描述

row

可選。清除螢幕後遊標移動到的行。預設值為 1。

col

可選。清除螢幕後遊標移動到的列。預設值為 1。

color

可选。设置屏幕颜色。如果包含 row 和 col,则将 color 作为第三个参数。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Draw a circle, and clear it after 2 seconds.
controller.screen.draw_circle(x=320, y=240, radius=80)
wait(2, SECONDS)
controller.screen.clear_screen()

# Print two messages in the same spot
controller.screen.print("Hello!")
wait(3,SECONDS)
controller.screen.clear_screen(row=1, col=1)
controller.screen.print("Goodbye!")

# Set the background color of the screen to red.
controller.screen.clear_screen(color=RED)

wait_for_render#

wait_for_render 將螢幕繪製切換為稍後渲染行為。此方法運行後,後續螢幕命令將不會顯示在控制器螢幕上,直到下一個 wait_for_render 方法運行。

注意:在繪製一組文字、形狀或圖像之前使用此方法,然後再次使用此方法可一次渲染完整的更新。

用法:
controller.screen.wait_for_render()

範圍

描述

此方法沒有參數。

# Display text and images when button 7 is pressed.
controller.screen.wait_for_render()
controller.screen.print("Screen rendered!")
controller.screen.draw_circle(x=320, y=240, radius=80)
while not controller.button7.pressing():
    wait(5, MSEC)
controller.screen.wait_for_render()

VEX AIR 無人機控制器螢幕的截圖,左上角有白色文字“螢幕渲染完成!”,螢幕中央畫有一個白色圓圈。

set_font#

set_font 設定用於在控制器螢幕上顯示文字的字體。此字體將套用於此方法運行後列印的所有文字。專案開始時的預設字體為 MONO20。

用法:
controller.screen.set_font(fontname)

範圍

描述

fontname

将字体设置为以下选项之一:

  • MONO12
  • MONO15
  • MONO20
  • MONO24
  • MONO30
  • MONO36
  • MONO40
  • MONO60
  • PROP20
  • PROP24
  • PROP30
  • PROP36
  • PROP40
  • PROP60

VEX AIR 無人機控制器螢幕截圖,左上角以 Mono 12 字體印製白色字母和數字。字母 AZ 位於一行,佔據螢幕寬度的大約三分之一。左下角顯示「91 個字符,30 行」。
MONO12

与上一张相同的图像,现在使用 Mono 15 字体。字母 A-Z 显示在同一行,占据了近一半的屏幕宽度。左下角显示每行可容纳 71 个字符,共 23 行。
MONO15

与上一张相同的图像,现在使用 Mono 20 字体。字母 A-Z 显示在同一行,占据了屏幕一半的宽度。左下角显示每行可容纳 53 个字符,共 18 行。
MONO20

与上一张相同的图像,现在使用 Mono 24 字体。字母 A-Z 显示在同一行,占据了略多于一半的屏幕宽度。左下角显示每行可容纳 45 个字符,共 15 行。
MONO24

与上一张相同的图像,现在使用 Mono 30 字体。字母 A-Z 显示在同一行,占据了约四分之三的屏幕宽度。左下角显示每行可容纳 35 个字符,共 12 行。
MONO30

与上一张相同的图像,现在使用 Mono 36 字体。字母 A-Z 显示在同一行,几乎占据了整个屏幕宽度。左下角显示每行可容纳 29 个字符,共 10 行。
MONO36

与上一张相同的图像,现在使用 Mono 40 字体。字母 A-Z 显示在同一行,占据了整个屏幕宽度。左下角显示每行可容纳 26 个字符,共 9 行。
MONO40

与上一张相同的图像,现在使用 Mono 60 字体。字母 A-Q 显示在同一行,占据了整个屏幕宽度。左下角显示每行可容纳 17 个字符,共 6 行。
MONO60

與上一張圖片相同,現在使用 Prop 20 字體。字母 AZ 在一行,佔據螢幕寬度的一半多一點。左下角顯示 49 個字符,18 行。
PROP20

与上一张相同的图像,现在使用 Prop 24 字体。字母 A-Z 显示在同一行,占据了约三分之二的屏幕宽度。左下角显示每行可容纳 42 个字符,共 15 行。
PROP24

與上一張圖片相同,現在使用 Prop 30 字體。字母 AZ 位於一行,佔據螢幕寬度的四分之三。左下角顯示「33 個字符,12 行」。
PROP30

與上一張圖片相同,但現在使用了36號提案字體。字母AZ在一行上,幾乎橫跨整個螢幕寬度。左下角顯示「27個字符,10行」。
PROP36

與上一張圖片相同,但現在使用了 Prop 40 字體。字母 AY 位於一行,橫跨螢幕寬度。左下角顯示「24 個字符,9 行」。
PROP40

與上一張圖片相同,但現在使用了 Prop 60 字體。字母 AQ 位於一行,橫跨螢幕寬度。左下角顯示「17 個字符,6 行」。
PROP60

# Display text using a larger font.
controller.screen.set_font(MONO40)
controller.screen.print("VEX")

與之前的圖片相同,現在左上角印有 Mono 40 字體的 VEX 字樣。

set_pen_width#

set_pen_width 設定繪製線條和形狀輪廓的粗細。

用法:
controller.screen.set_pen_width(width)

範圍

描述

width

筆的寬度,以像素為單位的整數表示。

# Draw a rectangle with a pen width of 10.
controller.screen.set_pen_width(10)
controller.screen.draw_rectangle(x=200, y=200, width=200, height=80)

VEX AIR 無人機控制器螢幕的截圖,中間印有一個粗邊框的白色矩形。

set_pen_color#

set_pen_color 設定文字、像素、線條和形狀輪廓的顏色。

用法:
controller.screen.set_pen_color(color)

範圍

描述

color

可选。设置画笔和字体颜色。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Draw a rectangle with an orange outline.
controller.screen.set_pen_color(ORANGE)
controller.screen.draw_rectangle(x=200, y=150, width=240, height=150)
controller.screen.set_pen_color(WHITE)
controller.screen.print_at("VEXcode AIR", x=250, y=220)

VEX AIR 無人機控制器螢幕的截圖,中間有一個細長的橙色矩形,矩形內印有白色的“VEXcode AIR”字樣。

set_text_fill_color#

set_text_fill_color 設定列印文字的填滿顏色。預設的文字填滿顏色為透明。

用法:
controller.screen.set_text_fill_color(color)

範圍

描述

color

可选。设置文本填充颜色。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Display two colors behind text
controller.screen.set_text_fill_color(RED)
controller.screen.print("Red")
controller.screen.next_row()
controller.screen.set_text_fill_color(BLUE)
controller.screen.print("Blue")

VEX AIR 無人機控制器畫面的截圖,左上角印了兩行文字。第一行是白色字體的“紅色”,帶有紅色高亮顯示;第二行緊隨其後,是白色字體的“藍色”,帶有藍色高亮顯示。

set_fill_color#

set_fill_color 設定繪製形狀時所使用的填滿顏色。預設填滿顏色為黑色。

用法:
controller.screen.set_fill_color(color)

範圍

描述

color

可选。设置填充颜色。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Draw an orange-filled rectangle with text on top
controller.screen.set_fill_color(ORANGE)
controller.screen.draw_rectangle(x=200, y=150, width=250, height=150)
controller.screen.print_at("VEXcode AIR", x=250, y=220)

VEX AIR 無人機控制器螢幕的截圖,圖中有一個實心橙色矩形,帶有細白邊框,矩形中心印有白色文字“VEXcode AIR”。

畫#

draw_pixel#

draw_pixel 使用目前 筆顏色 在選取的 x 和 y 座標處繪製一個像素。

用法:
controller.screen.draw_pixel(x, y)

範圍

描述

x

將繪製像素的 x 座標,以 0 到 640 之間的整數表示。

y

將繪製像素的 y 座標,以 0 到 480 之間的整數表示。

# Draw five pixels in a diagonal.
controller.screen.draw_pixel(x=360, y=200)
controller.screen.draw_pixel(x=340, y=220)
controller.screen.draw_pixel(x=320, y=240)
controller.screen.draw_pixel(x=300, y=260)
controller.screen.draw_pixel(x=280, y=280)

VEX AIR 無人機控制器螢幕的截圖,螢幕中央沿對角線均勻地印有 5 個像素。

draw_line#

draw_line 使用目前的 筆寬 和 筆顏色 從第一個螢幕座標 (x1, y1) 到第二個螢幕座標 (x2, y2) 繪製一條線。

x 和 y 座標使用預設原點 (0, 0),除非使用 set_origin 設定了不同的原點。

用法:
controller.screen.draw_line(x1, y1, x2, y2)

範圍

描述

x1

線的起始 x 座標,以 0 到 640 之間的整數表示。

y1

線的起始 y 座標,以 0 到 480 之間的整數表示。

x2

線的結束 x 座標,以 0 到 640 之間的整數表示。

y2

線的結束 y 座標,以 0 到 480 之間的整數表示。

# Make an X across the screen.
controller.screen.draw_line(x1=0, y1=0, x2=640, y2=480)
controller.screen.set_pen_color(CYAN)
controller.screen.draw_line(x1=0, y1=480, x2=640, y2=0)

VEX AIR 無人機控制器畫面的截圖,從左上角到右下角畫一條白線,從左下角到右上角畫一條青色線,兩條線在中心相交。

draw_rectangle#

draw_rectangle 使用目前的 筆寬、筆顏色 和 填滿顏色 繪製矩形,除非使用了可選的 color 參數。

x 和 y 座標使用預設原點 (0, 0),除非使用 set_origin 設定了不同的原點。

用法:
controller.screen.draw_rectangle(x, y, width, height, color)

範圍

描述

x

矩形左上角的 x 座標,以 0 到 640 之間的整數表示。

y

矩形左上角的 y 座標,以 0 到 480 之間的整數表示。

width

矩形的寬度,以 0 到 640 之間的整數表示。

height

矩形的高度,以 0 到 480 之間的整數表示。

color

可选。设置矩形的填充颜色。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Draw two rectangles on the screen.
controller.screen.draw_rectangle(x=0, y=0, width=620, height=460)
controller.screen.draw_rectangle(x=200, y=180, width=200, height=100, color=GREEN)

VEX AIR 無人機控制器螢幕的截圖,螢幕中心印有一個帶有細白邊框的實心綠色矩形,螢幕外緣也印有一個細白邊框。

draw_circle#

draw_circle 使用目前的 筆寬、筆顏色 和 填滿顏色 繪製一個圓,除非使用了可選的 color 參數。

x 和 y 座標使用預設原點 (0, 0),除非使用 set_origin 設定了不同的原點。

用法:
controller.screen.draw_circle(x, y, radius, color)

範圍

描述

x

圓心的 x 座標,以 0 到 640 之間的整數表示。

y

圓心的 y 座標,以 0 到 480 之間的整數表示。

radius

圓的半徑,以 0 到 480 像素之間的整數表示。

color

可选。设置圆形的填充颜色。可选颜色包括:

  • BLACK
  • BLUE
  • CYAN
  • GREEN
  • ORANGE
  • PURPLE
  • RED
  • TRANSPARENT
  • WHITE
  • YELLOW
你也可以指定 自定义颜色。

# Draw one green circle on the screen.
controller.screen.set_fill_color(GREEN)
controller.screen.draw_circle(x=320, y=240, radius=200, color=GREEN)

VEX AIR 無人機控制器螢幕的截圖,螢幕中央繪製了一個帶有細白邊框的大型實心綠色圓圈。

show_file#

show_file 在控制器螢幕上的 x 和 y 位置繪製自訂上傳的影像,並可選擇縮放、旋轉和 alpha 透明度。

用法:
controller.screen.show_file(file, x, y, scale_width, scale_height, rotation, use_alpha)

範圍

描述

file

要使用的用戶上傳的圖片。如果在控制台中編輯了圖片名稱,選項將會變更。

x

影像的水平偏移量,以像素為單位的整數形式指定。正值表示向右移動;負值表示向左移動。

y

影像的垂直偏移量,以像素為單位的整數形式指定。正值表示向下移動;負值表示向上移動。

scale_width

可選。要縮放的影像寬度,以像素為單位的整數形式給出。

scale_height

可選。要縮放的影像高度,以像素為單位的整數形式給出。

rotation

可選參數。影像旋轉的角度,取值範圍為 0 到 359 之間的整數。

use_alpha

可選。是否使用影像的 alpha 通道實現透明度。選項包括: True 或 False。

# Display uploaded Image 1 in the top left corner.
controller.screen.show_file(IMAGE1, x=0, y=0)

# Display uploaded Image 1 scaled to the full screen.
controller.screen.show_file(IMAGE1, x=65, y=0, scale_width=640, scale_height=480)

# Display uploaded Image 1 with rotation of 180 degrees.
controller.screen.show_file(IMAGE1, x=-65, y=0, rotation=180)

# Upload an image with a transparent background.
# Display uploaded Image 1 with alpha channel enabled.
controller.screen.show_file(IMAGE1, x=0, y=0, use_alpha=True)

觸碰#

pressing#

pressing 返回一個布林值,指示機器人的螢幕目前是否被按下。

  • True – 螢幕被按下。

  • False – 螢幕未按下。

用法:
controller.screen.pressing()

參數

描述

此方法沒有參數。

# Play a sound when the screen is pressed.
while True:
    if controller.screen.pressing():
        controller.sound.play_note("C5", 500)
    wait(5, MSEC)

# Display different messages after the screen is pressed
while not controller.screen.pressing():
    wait(5, MSEC)
controller.screen.print("First message!")
controller.screen.next_row()
# Lift finger to press the screen again
while controller.screen.pressing():
    wait(5, MSEC)
while not controller.screen.pressing():
    wait(5, MSEC)
controller.screen.print("Second message!")
controller.screen.next_row()

x_position#

x_position 返回螢幕上次被按下位置的 x 座標(以像素為單位),取值範圍為 0(左)到 640(右)。

VEX AIR 無人機控制器,螢幕尺寸可列印的區域已以紅色方塊標示。座標從左上角的 (0,0) 開始,順時針方向依序為 (0, 640)、(480, 640) 和 (480,0) 至左下角。螢幕中心座標為 (240, 320)。

用法:
controller.screen.x_position()

參數

描述

此方法沒有參數。

# Play a high or low note based on where screen is pressed.
while True:
    if controller.screen.pressing():
        if controller.screen.x_position() > 320:
            controller.sound.play_note("C6", 500)
        else:
            controller.sound.play_note("C4", 500)
    wait(5, MSEC)

y_position#

y_position 返回螢幕上次被按下位置的 y 座標(以像素為單位),取值範圍為 0(頂部)到 480(底部)的整數。

VEX AIR 無人機控制器,螢幕尺寸可列印的區域已以紅色方塊標示。座標從左上角的 (0,0) 開始,順時針方向依序為 (0, 640)、(480, 640) 和 (480,0) 至左下角。螢幕中心座標為 (240, 320)。

用法:
controller.screen.y_position()

# Play a high or low note based on where screen is pressed.
while True:
    if controller.screen.pressing():
        if controller.screen.y_position() > 240:
            controller.sound.play_note("C6", 500)
        else:
            controller.sound.play_note("C4", 500)
    wait(5, MSEC)

回呼函數#

pressed#

pressed 註冊一個在控制器畫面被按下時要呼叫的函數。

用法:
controller.screen.pressed(callback, arg)

參數

描述

callback

一個預先定義好的函數,當按下控制器螢幕時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的函數。

# Play a sound when the screen is pressed.
def play_sound():
    controller.sound.play_note("C5", 500)

controller.screen.pressed(play_sound)

released#

released 註冊一個在控制器畫面釋放時要呼叫的函數。

用法:
controller.screen.released(callback, arg)

參數

描述

callback

先前定義的一個函數,當控制器螢幕釋放時執行。

arg

可選。包含要傳遞給回呼函數的參數的元組。有關更多信息,請參閱使用帶參數的函數。

# Play a sound when the screen is pressed.
def play_sound():
    controller.sound.play_note("C5", 500)

controller.screen.released(play_sound)