跳转到内容

TI-Basic Z80 编程/GetKey

来自维基教科书,开放的书籍,开放的世界

在编写某些 TI-Basic 程序时,获取单个按键按下操作可以非常有用,方便进行高级菜单处理或游戏开发。这可以通过getKey(PRGM I/O 7). getKey来实现,它在指令执行时返回按键按下的数值。

getKey→variable

按键代码图

[编辑 | 编辑源代码]

存储到变量中的值是一个特殊数字,代表按下的按键。右侧的图示显示了与按键相对应的值。

每个按键都分配有一个两位数或三位数。第一个数字(如果数字是三位数,则为前两个数字)是按键的行号(按键在计算器上的位置,向下数),最后一个数字是按键的列号(按键在行上的位置,向右数)。因此 SIN 按键位于第五行第二列,因此其代码为 52。唯一略微例外的是方向键。, ,和都被视为第二行的一部分,并相应地编号。ON 没有可访问的数值(理论上应该是101;但是,它充当程序中断按钮)。

因为getKey只返回指令执行期间的按键按下操作,所以它经常返回 0,因为在指令执行期间没有按键按下。但是,getKey指令可以在循环中运行,允许随时注册用户输入。

为此,使用以下简单代码

0→K
Repeat K
getKey→K
End

该程序将等待用户按下键盘上的按键,然后退出循环并继续执行。由于getKey如果未按下任何按键,则返回 0,因此代码会重复,因为Repeat如果条件为 0 或 false,则会循环。

请注意,变量 K 是将getKey存储到的默认变量。

可以使用 Ans 来减少 4 个字节

Repeat Ans
getKey
End

如果getKey被调用,但没有存储到变量中,该值将存储到 Ans 中。

试试看!

[编辑 | 编辑源代码]

尝试以下示例来练习使用getKey.

玩家移动

[编辑 | 编辑源代码]

使用getKey,在屏幕上绘制一个玩家(使用单个字符,例如*),并允许用户按下方向键在 X 和 Y 方向上移动玩家。确保玩家不会移出屏幕。

解决方案
:1→X :1→Y :0→K :ClrHome :While 1 :Repeat K :getKey→K :End :Output(Y,X," ") :If K=25 and Y>1 :Y-1→Y :If K=34 and Y<7 :Y+1→Y :If K=24 and X>1 :X-1→X :If K=26 and X<16 :X+1→X :Output(Y,X,"*") :End



上一节:条件指令
下一节:菜单
目录:TI-Basic Z80 编程

华夏公益教科书