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
|