对于一个实验我决定使用内置的程序编辑器将一个小游戏编程到我的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
这会创建一个无限的游戏循环,检查是否按下了左,右或删除按钮并相应地向左或向右绘制一个圆圈或完全结束程序。然而,这种方法似乎运行得非常缓慢,我在其他演示中看到了更平稳的运动。我的方法有问题,如果有,我怎样才能改进它?
答案 0 :(得分:3)
抱歉,我使用的是TI-84,但这种方法仍然可以使用。
getKey()函数是创建延迟的函数。如果将输出放入变量,则只需运行一次getKey()函数。在TI-84中,你可以做到
getKey->K
你应该能够用TI-89做同样的事情。
希望这有帮助!
答案 1 :(得分:0)
我通常使用的是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-84进行编程,但这个想法应该在TI-89中大致相同,但稍作调整。