屏幕#

介绍#

VEX AIM 编程机器人的屏幕提供了用于显示文本、管理光标、绘制形状和处理触摸交互的模块。

以下是所有模块的列表:

光标打印 — 使用行列光标系统管理文本显示。

XY 打印 — 按像素坐标打印文本。

设置 — 自定义文本格式和屏幕显示。

绘图——创建图形和视觉元素。

触摸 — 检测屏幕交互。

光标打印#

将光标设置到屏幕上的行列#

使用“将光标设置到屏幕上的行和列”模块时,光标会放置在屏幕上的特定行和列。可舒适显示的行数和列数取决于所选字体。使用默认的等宽中等字体,最多可以清晰显示 8 行和 13 列。超出此范围的文本可能会被截断或难以阅读。

等宽字体的所有字符宽度相同,因此文本位置保持一致。相比之下,比例字体的字符宽度各不相同,因此有些字母比其他字母占用更多空间。但是,无论使用哪种字体,“将光标设置为屏幕上的行/列”模块都会根据行和列的大小(而#set-font-on-screen字体样式)来定位光标。可以使用“将字体设置为屏幕上的字体”模块来调整字体大小。

设置游标堆栈块#
在屏幕上设定光标至 [1] 行 [1] 列

参数

描述

游标所在行。

柱子

光标所在的列。

示例

启动时,将光标移动到屏幕上的第 3 行、第 2 列,并打印“第 3 行、第 2 列”。#
当开始
[Display text starting at Row 3 Column 2.]
在屏幕上设定光标至 (3) 行 (2) 列
在屏幕上打印 [Row 3, Column 2]▶

机器人屏幕的截图,屏幕中心上方用白色字体打印了第 3 行第 2 列,从第 3 行第 2 列开始。

当开始
[Display cargo amounts in an organized list.]
设定屏幕字体为 [比例字体 v] [大 v]
在屏幕上打印 [Sports Balls]◀ 并设定光标为下一行
在屏幕上打印 [Orange Barrels]◀ 并设定光标为下一行
在屏幕上打印 [Blue Barrels]▶
在屏幕上设定光标至 [1] 行 [11] 列
在屏幕上打印 [2]▶
在屏幕上设定光标至 [2] 行 [11] 列
在屏幕上打印 [3]▶
在屏幕上设定光标至 [3] 行 [11] 列
在屏幕上打印 [3]▶

机器人屏幕的截图显示三行白色文字,分别列出“运动球 2”、“橙色桶 3”和“蓝色桶 3”。数字位于每个标签的右侧,列表从屏幕顶部开始。

当开始
[Display the ID of the detected AprilTag.]
设定屏幕字体为 [比例字体 v] [特大 v]
永久循环
清屏
在屏幕上打印 [AprilTag]▶
从 AI 视觉仪获取 [所有AprilTags v] 数据
如果 <AI 视觉仪对象存在?> 那么
在屏幕上设定光标至 [3] 行 [4] 列
在屏幕上打印 (AI 视觉仪对象 [tagID v])▶
结束
等待 [0.1] 秒

机器人屏幕的截图,屏幕中央附近印有白色文字,第一行是 AprilTag,第二行是 4。

将光标移至屏幕上的下一行#

将光标设置到屏幕上的下一行 代码块会将光标移动到机器人屏幕上下一行的第 1 列。

将光标设置到下一行堆栈块#
在屏幕上设定光标至下一行

参数

描述

该块没有参数。

例子

启动时,在屏幕上打印“第 1 行”,将光标移动到下一行,然后打印“第 2 行”。#
当开始
[Display two lines of text.]
在屏幕上打印 [Line 1]▶
在屏幕上设定光标至下一行
在屏幕上打印 [Line 2]▶

机器人屏幕的截图,文字为白色。屏幕顶部左对齐显示“第 1 行”,下方紧邻“第 2 行”。

屏幕上的清除行#

清除屏幕上的行 模块会清除机器人屏幕上的一行文本。

清除行堆栈块#
清除屏幕第 [1] 行

参数

描述

要清除的行号。

例子

启动后,打印两行文本。第一行保留,第二行在 3 秒后消失。#
当开始
[Display text on two rows.]
在屏幕上打印 [This text stays]▶
在屏幕上设定光标至下一行
在屏幕上打印 [This text disappears]▶
等待 [3] 秒
清除屏幕第 [2] 行

屏幕光标列#

屏幕光标列块返回将以整数形式打印文本的列号。

屏幕光标列报告块#
(屏幕光标列数)

参数

描述

该块没有参数。

例子

启动时,将光标移动到屏幕上的第 3 行、第 2 列,并打印当前光标列号。#
当开始
[Display the cursor's current column.]
在屏幕上设定光标至 [3] 行 [2] 列
在屏幕上打印 (屏幕光标列数)▶

机器人屏幕的截图,左上象限中心附近,第 3 行第 2 列,印有一个白色的数字 2。

屏幕光标行#

屏幕光标行块返回将以整数形式打印文本的行号。

屏幕光标行报告块#
(屏幕光标行数)

参数

描述

该块没有参数。

例子

启动后,将光标移动到屏幕上的第 6 行、第 2 列,并打印当前光标行号。#
当开始
[Display the cursor's current row.]
在屏幕上设定光标至 [3] 行 [2] 列
在屏幕上打印 (屏幕光标行数)▶

机器人屏幕的截图,左上象限中心附近,第 3 行第 2 列,印有一个白色的数字 3。

XY打印#

设置屏幕原点#

设置屏幕原点 设置在机器人屏幕上绘图或打印时使用的原点 (0,0)。默认情况下,绘图或打印块将屏幕左上角视为原点。此块可以将原点重置为另一个 (x, y) 屏幕坐标位置。

设置屏幕原点堆栈块#
设置屏幕原点 x: [0] y: [0]

参数

描述

x

设置新原点的 x 坐标(以像素为单位)。

y

设置新原点的 y 坐标(以像素为单位)。

例子

启动时,将屏幕原点设置为 (120, 120),并在新原点处绘制一个矩形,其左上角位于 (0,0)、宽度为 80 像素,高度为 40 像素。#
当开始
[Set the origin to the center of the screen.]
设置屏幕原点 x: [120] y: [120]
[Draw a rectangle at the new origin.]
在屏幕 [0] [0] [80] [40] 上画矩形

机器人屏幕的截图,左下角绘制了一个白色矩形。矩形的左上角是屏幕中心。

设置#

清除屏幕#

清除屏幕块清除机器人屏幕上的所有图形和文本,并将光标位置重置为第 1 行、第 1 列。

清除屏幕块#
清屏

参数

描述

该块没有参数。

例子

启动后,以 (120,120) 为圆心,半径为 40 像素绘制一个圆。2 秒后,屏幕清空。#
当开始
[Draw a circle, and clear it after 2 seconds.]
在屏幕 [120] [120] [40] 上画圆形
等待 [2] 秒
清屏

填满屏幕#

填充屏幕块清除机器人屏幕上的所有图形和文本,然后将背景更改为指定的颜色。

填充屏幕块#
屏幕填充色为 [红色 v]

参数

描述

颜色

将背景颜色更改为:

  • 红色
  • 绿色
  • 蓝色
  • 黑色
  • 白色
  • 黄色
  • 橙色
  • 紫色
  • 青色

例子

当开始
[Say "Hello" then turn screen yellow.]
在屏幕上打印 [Hello]▶
等待 [2] 秒
屏幕填充色为 [yellow v]

设置屏幕上的字体#

“设置屏幕字体”模块用于设置机器人屏幕上显示文本的字体和字号。此字体将应用于之后所有打印的文本。

设置字体堆栈块#
设定屏幕字体为 [等宽字体 v] [超小 v]

参数

描述

类型

字体类型:

  • 等宽
  • 比例

尺寸

字体大小(如下所示):

  • 超小
  • 特小
  • 特大
  • 超大

机器人屏幕截图,显示以 Mono 12 字体打印的数字和字母示例。字母表占据一行文本。底部文字横向 26 个字符,共 15 行。
等宽超小号

与上一张图片相同,但字体为 Mono 15。字母 AT 占据一行文字。底部文字为 20 个字符宽,12 行。(/_static/img/fonts/mono15.png)
等宽特小号

与上一张图片相同,但字体为 Mono 20。字母 AP 占据一行文字。底部文字为 16 个字符宽,共 9 行。(/_static/img/fonts/mono20.png)
等宽小号

与上一张图片相同,但字体为 Mono 24。字母 AM 占据一行文字。底部文字横向 13 个字符,共 8 行。(/_static/img/fonts/mono24.png)
等宽中等字体

与上一张图片相同,使用 Mono 30 字体。字母 AK 占据一行文字。底部文字横向 11 个字符,共 6 行。
等宽大号

与上一张图片相同,使用 Mono 40 字体。字母 AH 占据一行文字。底部文字横向 8 个字符,共 5 行。
等宽特大号

与上一张图片相同,使用 Mono 60 字体。数字 1-6 占据一行文字。底部文字占据三行。
等宽超大号

与上一张图片相同,但使用 Prop 20 字体。字母 As 占据一行文本。底部文字为 20 个字符宽,9 行高。
比例小

与上一张图片相同,但使用 Prop 30 字体。字母 AM 占据一行文字。底部文字为 15 个字符,共 6 行。
比例大

与上一张图片相同,但使用 Prop 40 字体。字母 AJ 占据一行文字。底部文字为 11 个字符,共 5 行。
比例超大

机器人屏幕截图,显示以 Prop 60 字体打印的数字样本。数字 1-7 占据一行文本。底部显示 7 行 3 列。
比例超大

例子

启动时,将字体设置为“等宽超大”并在屏幕上打印“VEX”。#
当开始
[Display text using a larger font]
设定屏幕字体为 [等宽字体 v] [特大 v]
在屏幕上打印 [VEX]▶

机器人屏幕的截图显示,左上角用白色 Mono 40 字体打印着 VEX 字样。

设置屏幕打印精度#

“设置屏幕打印精度”模块用于设置机器人屏幕上显示数字的精度格式。此打印精度将应用于之后打印的所有数字。

设置打印精度堆栈块#
在屏幕上设定打印精度为 [0.1 v]

参数

描述

精确

将打印精度设置为:

  • 1
  • 0.1
  • 0.01
  • 0.001
  • 所有数字

例子

启动时,将打印精度设置为小数点后两位,并在屏幕上将 1/3 打印为 0.33。#
当开始
[Print 1/3 as 0.33.]
在屏幕上设定打印精度为 [0.01 v]
在屏幕上打印 ([1] [math_division v] [3])▶

机器人屏幕的截图左上角显示白色数字 0.33。

设置屏幕上的笔宽#

设置屏幕上的笔宽 模块用于设置绘制线条和形状时使用的笔宽。

设置笔宽块#
设定屏幕笔宽为 [10]

参数

描述

宽度

笔的宽度(以像素为单位),范围从 0 到 32。

例子

启动时,将笔宽设置为10像素,并绘制一个矩形,其左上角位于(50,50),宽度为130像素,高度为60像素。#
当开始
[Draw a rectangle with a pen width of 10.]
设定屏幕笔宽为 [10]
在屏幕 [50] [50] [130] [60] 上画矩形

机器人屏幕的截图,上半部分画着一个粗白矩形。

设置屏幕上的笔/字体颜色#

设置屏幕上的笔/字体颜色 模块用于设置机器人屏幕上绘制线条、形状和文本时使用的笔颜色。

设置钢笔字体颜色#
设定屏幕笔/字体颜色为 [红色 v]

参数

描述

颜色

将笔颜色设置为:

  • 红色
  • 绿色
  • 蓝色
  • 黑色
  • 白色
  • 黄色
  • 橙色
  • 紫色
  • 青色
  • 透明

例子

启动时,将画笔颜色设置为红色,并绘制一个矩形,左上角位于(50,50),宽度为130像素,高度为60像素。#
当开始
[Draw a rectangle with a red pen.]
设定屏幕笔/字体颜色为 [红色 v]
在屏幕 [50] [50] [130] [60] 上画矩形

机器人屏幕的截图,上半部分画着一个细边框的红色矩形。

设置屏幕填充颜色#

设置屏幕填充颜色 模块用于设置绘制形状时使用的填充颜色。

设置填充颜色堆栈块#
设定屏幕填充色为 [红色 v]

参数

描述

颜色

将填充颜色设置为:

  • 红色
  • 绿色
  • 蓝色
  • 黑色
  • 白色
  • 黄色
  • 橙色
  • 紫色
  • 青色
  • 透明

示例

启动后,将填充颜色设置为橙色,并绘制两个矩形。第一个矩形位于 (50, 50),第二个矩形位于 (50, 130),宽度均为 100 像素,高度均为 60 像素。#
当开始
[Draw two orange rectangles.]
设定屏幕填充色为 [orange v]
在屏幕 [50] [50] [100] [60] 上画矩形
在屏幕 [50] [130] [100] [60] 上画矩形

机器人屏幕的截图,屏幕左侧中央有两个平行的橙色矩形,带有细细的白色轮廓。


启动时,将背景填充颜色设置为紫色并在屏幕上打印“高亮”。#
当开始
[Display text with a purple background.]
设定屏幕填充色为 [purple v]
在屏幕上打印 [Highlight]▶

机器人屏幕的截图显示“高亮显示”,白色文字周围有紫色高亮圈,从左上角开始。

#

在屏幕上显示图像文件#

在屏幕上显示图像文件 模块会在机器人的屏幕上绘制用户上传的自定义图像。

显示用户图像堆栈块#
显示图像文件 [1 v]

参数

描述

图像槽号

要使用的自定义图像,编号 1 到 10。图像编号与 AIM 控制面板中显示的数字一致。

例子

当开始
[Draw uploaded Image 1.]
显示图像文件 [1 v]

在屏幕上绘制像素#

在屏幕上绘制像素 块在指定的 (x, y) 屏幕坐标处以当前 画笔颜色 绘制像素。

绘制像素堆栈块#
在屏幕 [0] [0] 上画点

参数

描述

x

绘制像素的 x 坐标。

y

绘制像素的 y 坐标。

例子

启动时,在屏幕中心坐标 (120, 120) 处绘制一个像素。#
当开始
[Draw a pixel at the center of the screen.]
在屏幕 [120] [120] 上画点

机器人屏幕的截图,中心有一个白色像素。

在屏幕上画线#

在屏幕上绘制线条 模块使用当前的 笔宽笔颜色 从第一个指定的屏幕坐标 (x1, y1) 到第二个指定的屏幕坐标 (x2, y2) 绘制一条线。

画线堆叠块#
在屏幕 [0] [0] [10] [10] 上画线段

参数

描述

x1

线起点的 x 坐标(以像素为单位)。

y1

线起点的 y 坐标(以像素为单位)。

x2

线末端的 x 坐标(以像素为单位)。

y2

线末端的 y 坐标(以像素为单位)。

例子

启动时,从屏幕左上角(0,0)到右下角(240,240)绘制一条对角线。#
当开始
[Draw a line from the top left to bottom right of the screen.]
在屏幕 [0] [0] [240] [240] 上画线段

机器人屏幕的截图,从左上角到右下角画了一条细细的白色对角线。

在屏幕上绘制矩形#

在屏幕上绘制矩形 模块使用当前的 画笔宽度画笔颜色填充颜色 绘制矩形。

绘制矩形块#
在屏幕 [0] [0] [10] [10] 上画矩形

参数

描述

x

矩形左上角的 x 坐标(以像素为单位)。

y

矩形左上角的 y 坐标(以像素为单位)。

宽度

矩形的宽度(以像素为单位)。

高度

矩形的高度(以像素为单位)。

例子

启动时,在屏幕上绘制一个矩形,左上角位于(50,50),宽度为 130 像素,高度为 60 像素。#
当开始
[Draw a rectangle on the screen.]
在屏幕 [50] [50] [130] [60] 上画矩形

机器人屏幕的截图,上半部分画了一个白色矩形。

在屏幕上画一个圆#

在屏幕上绘制圆形 模块使用当前的 画笔宽度画笔颜色填充颜色 绘制圆形。

画圆堆叠块#
在屏幕 [0] [0] [10] 上画圆形

参数

描述

x

圆心的 x 坐标(以像素为单位)。

y

圆心的 y 坐标(以像素为单位)。

半径

圆的半径(以像素为单位)。

例子

启动时,在屏幕上绘制一个圆心为(120,120)、半径为40像素的圆圈。#
当开始
[Draw a circle on the screen.]
在屏幕 [120] [120] [40] 上画圆形

机器人屏幕的截图,中心画有一个白色圆圈。

触碰#

屏幕被按下?#

屏幕是否被按下? 模块返回机器人的屏幕当前是否被按下。该模块返回一个布尔值:

  • 正确——屏幕目前正被按下

  • 错误——屏幕未被按下

屏幕按下布尔块#
<屏幕按下了?>

参数

描述

该块没有参数。

例子

启动后,持续检测屏幕是否被按下。如果被按下,所有 LED 灯亮起白色;否则,所有 LED 灯保持熄灭。#
当开始
[Turn LEDs white only when the screen is pressed.]
永久循环
如果 <屏幕按下了?> 那么
设定 [lightall v] LED 颜色为 [white v]
否则
设定 [lightall v] LED 颜色为 [灭 v]
结束
结束

屏幕位置#

屏幕位置 块返回一个整数,表示按下屏幕时的 x 和 y 坐标(以像素为单位)。x 的返回值介于 0(左)和 240(右)之间。y 的返回值介于 0(上)和 240(下)之间。

VEX AIM 编程机器人的俯视图,屏幕边界框为白色矩形。从左上角开始顺时针方向,坐标 (0,0)、(240,0)、(0,240) 和 (240,240) 分别代表四个角点。矩形中心有一个红色圆圈,表示可视区域,白色虚线十字线与屏幕中心 (120, 120) 相交。

屏幕位置报告块#
(屏幕 [X v] 坐标)

参数

描述

协调

上次屏幕点击的坐标(像素):

  • x — 水平位置
  • y — 垂直位置

例子

启动后,持续检测屏幕是否按下。如果按下,则清除屏幕并打印触摸位置的 x 和 y 坐标。#
当开始
[Display the x and y coordinate of where the screen is pressed.]
永久循环
如果 <屏幕按下了?> 那么
清屏
在屏幕上打印 (屏幕 [X v] 坐标)▶
在屏幕上设定光标至下一行
在屏幕上打印 (屏幕 [y v] 坐标)▶
结束
结束

当屏幕事件#

当机器人的屏幕被按下或不再被按下时,将调用当屏幕事件块。

当屏幕事件帽子块#
当屏幕 [pressed v]

参数

描述

行动

决定何时执行所连接的代码块堆栈:

  • 按下
  • 释放

例子

按下屏幕时,所有 LED 均变为绿色。#
当屏幕 [pressed v]
[Set the LEDs to green when the screen is pressed.]
设定 [lightall v] LED 颜色为 [绿色 v]