2015-04-16 14 views
6

dla eksperymentu Zdecydowałem się zaprogramować małą grę w moim TI-89 za pomocą wbudowanego edytora programów, jednak nie mogę znaleźć optymalnej metody uzyskiwania naciśnięć klawiszy bez znacznego opóźnienia. Obecnie mam:Optymalna metoda sprawdzania naciśnięć klawiszy na 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 

To tworzy nieskończoną grę pętlę, która sprawdza, czy w lewo, w prawo, lub usunąć przyciski są wciskane i narysować okrąg lewo lub w prawo albo je zakończyć program w całości. Jednak ta metoda wydaje się działać bardzo wolno i widziałem dużo płynniejszy ruch w innych demonstracjach. Czy jest coś nie tak z moją metodą, a jeśli tak, jak mogę ją poprawić?

+0

Czy próbowałeś ustawić 'getKey()' na zmienną, a następnie testowałem zmienną? Nie mam przy sobie mojego kalkulatora, żeby to przetestować, ale wygląda na to, że może kilka razy uruchamiać 'getKey()' (jeden dla każdej instrukcji 'If') może spowolnić go bardziej niż po prostu przetestowanie zmiennej. – jaysoncopes

Odpowiedz

3

Przepraszam, używam TI-84, ale ta metoda powinna nadal działać.

Funkcja getKey() jest funkcją powodującą opóźnienie. Musisz tylko uruchomić funkcję getKey(), jeśli umieścisz dane wyjściowe w zmiennej. W TI-84 można po prostu zrobić:

getKey->K 

Powinieneś być w stanie zrobić dokładnie to samo z TI-89.

Mam nadzieję, że to pomoże!

0

Zazwyczaj używam instrukcji While while not(), następnie sprawdź odpowiedź później.

Na przykład

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

W ten sposób jesteś po prostu wykonującego jakiś kod (być może niektóre podstawowe dodawanie i odejmowanie lub pętli for, aby spowolnić) oraz pojedynczy Jeżeli oświadczenie o każdej pętli while zamiast sprawdzać wiele instrukcji If w każdej pętli.

To ci dobrze służy i pozwala zrobić coś w każdej iteracji pętli While, wciąż sprawdzając naciśnięcie klawisza.

Zauważ, że zazwyczaj programuję na TI-84, ale pomysł powinien działać tak samo w TI-89 z odrobiną poprawek.