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() 関数を 1 回だけ実行する必要があります。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

このようにして、ループごとに多くの If ステートメントをチェックする代わりに、いくつかのコード (おそらくいくつかの基本的な加算と減算または For ループを実行して処理を遅くする) と、While ステートメントの各ループで 1 つの If ステートメントを実行するだけです。

これはうまく機能し、キープレスをチェックしながら、While ループの各反復で何かを行うことができます。

私は通常 TI-84 でプログラムを作成しますが、TI-89 でも少し調整すればほぼ同じように動作するはずです。

于 2015-06-24T21:49:33.383 に答える