检查 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 做同样的事情。
希望对您有所帮助!
为了进行实验,我决定使用内置的程序编辑器将一个小游戏编程到我的 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 做同样的事情。
希望对您有所帮助!