6

对于一个实验,我决定使用内置的程序编辑器将一个小游戏编程到我的 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

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

4

2 回答 2

3

抱歉,我使用的是 TI-84,但这种方法应该仍然有效。

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

getKey->K

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

希望这可以帮助!

于 2015-12-16T16:52:01.587 回答
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 上工作得差不多,只是稍作调整。

于 2015-06-24T21:49:33.383 回答