检查 TI-89 按键的最佳方法

Optimal Method of Checking Keypresses on TI-89

为了进行实验,我决定使用内置的程序编辑器将一个小游戏编程到我的 TI-89 中,但是我想不出一种没有明显延迟的最佳击键方法。目前我有:

Prgm

70→xpos
70→ypos

Loop

If getKey()=340 Then
xpos+3→xpos
PxlCrcl ypos,xpos,5,1
EndIf

If getKey()=337 Then
xpos-3→xpos
PxlCrcl ypos,xpos,5,1
EndIf

If getKey()=257 Then
Goto end 
EndIf

EndLoop
Lbl end

EndPrgm

这会创建一个无限的游戏循环,检查是否按下了向左、向右或删除按钮,并相应地向左或向右画一个圆圈,或者完全结束程序。然而,这种方法似乎 运行 非常缓慢,我在其他演示中看到了更流畅的动作。我的方法有问题吗?如果有,我该如何改进?

我通常做的是使用 While not() 语句,然后检查答案。

例如

loop
0 -> X
while not(X)
    do something every iteration
    getKey()
    if Ans: Ans -> X
Check values of X with If statements
End loop

通过这种方式,您只需执行一些代码(可能是一些基本的加法和减法或用于减慢速度的 For 循环)和 While 语句的每个循环上的单个 If 语句,而不是检查大量 If 语句在每个循环中。

这对您很有帮助,并允许您在 While 循环的每次迭代中做一些事情,同时仍然检查按键。

请注意,我通常在 TI-84s 上编程,但这个想法在 TI-89 上应该可以大体相同,只需稍作调整。

抱歉,我用的是TI-84,不过这个方法应该还是可以的。

getKey() 函数是创建延迟的函数。如果将输出放入变量,则只需 运行 getKey() 函数一次。在TI-84中,你可以做到

getKey->K

你应该可以用 TI-89 做同样的事情。

希望对您有所帮助!