2015-04-16 18 views
6

für ein Experiment Ich entschloss mich, mit dem eingebauten Programmeditor ein kleines Spiel in meinen TI-89 zu programmieren, aber ich finde keine optimale Methode, Tastenanschläge ohne signifikante Verzögerung zu erhalten. Zur Zeit habe ich:Optimale Methode zur Überprüfung von Keypresses auf 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 

Dies schafft eine endlose Spiel-Schleife, die die linke überprüft, ob rechts oder Tasten löschen, gedrückt und ziehen Sie einen Kreis ganz das Programm nach links oder rechts entsprechend oder enden. Allerdings scheint diese Methode extrem langsam zu laufen und ich habe bei anderen Demonstrationen viel ruhigere Bewegungen gesehen. Ist etwas nicht in Ordnung mit meiner Methode und wenn ja, wie kann ich es verbessern?

+0

Haben Sie versucht, 'getKey()' auf eine Variable zu setzen und dann die Variable zu testen? Ich habe meinen Taschenrechner nicht dabei, um das zu testen, aber es scheint, als ob man 'getKey()' mehrere Male (eine für jede 'If' Anweisung) langsamer laufen lassen kann, als einfach nur eine Variable zu testen. – jaysoncopes

Antwort

3

Entschuldigung, ich benutze einen TI-84, aber diese Methode sollte immer noch funktionieren.

Die Funktion getKey() ist die Funktion, die eine Verzögerung erzeugt. Sie müssen die Funktion getKey() nur einmal ausführen, wenn Sie die Ausgabe in eine Variable setzen. In TI-84, können Sie nur

getKey->K 

Sie sollten genau die gleiche Sache mit TI-89 tun können.

Hoffe, das hilft!

0

Was ich normalerweise tue, ist eine While not() -Anweisung, dann überprüfen Sie die Antwort danach.

Zum Beispiel

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

Auf diese Weise können Sie nur einen Code ausgeführt werden (vielleicht einige grundlegende Addition und Subtraktion oder eine For-Schleife Dinge zu verlangsamen) und eine einzige If-Anweisung auf jeder Schleife der While-Anweisung anstatt viele If-Anweisungen in jeder Schleife zu prüfen.

Dies dient Ihnen gut und ermöglicht es Ihnen, während jeder Iteration der While-Schleife etwas zu tun, während Sie immer noch nach einem Tastendruck suchen.

Beachten Sie, dass ich normalerweise auf TI-84s programmieren, aber die Idee sollte im TI-89 mit ein wenig Feinabstimmung ähnlich funktionieren.