Alcarin Temat założony przez niniejszego użytkownika |
[Allegro] Problem z zczytywaniem znaku » 2012-01-08 13:06:52 Witam,
Piszę grę planszową i mam taki problem:
- gra ładuje się, wtedy gdy nie ma jeszcze wylosowanej wartosci przez kostkę ( czyli oczko==0) program nie powinien zczytywac mi znaków pod klawisz2 (chyba, ze sie myle ?), dopiero po wylosowaniu kostki program ladnie sie zatrzymuje i sa 2 opcje:
- albo gracz nie wcisnie przycisku 1 2 3 4 przed losowaniem, dopiero po - wtedy dobrze dziala
- gracz wcisnie klawisz przed losowaniem - wtedy po wcisnieciu kostki pionek sie od razu przesowa.
Jesli bedzie potrzebna dalsza czesc kodu prosze napisac. Prosze o pomoc.
if( tura == 1 && klawisz2 == 0 ) { if( losuj == true ) { textprintf_ex( poletextowe, font, 0, 0, makecol( 255, 255, 255 ), - 1, "Trwa losowanie" ); } if( losowanie == 0 && losuj == false ) { textprintf_ex( poletextowe, font, 0, 0, makecol( 255, 255, 255 ), - 1, "Wylosowano: %d", oczko ); if( oczko != 0 ) { while( nrpionka == 0 ) { switch( klawisz2 = readkey() ) { case 7217: nrpionka = 1; break; case 7474: nrpionka = 2; break; case 7731: nrpionka = 3; break; case 7988: nrpionka = 4; break; } }
W skrócie: Chce wybierac pionka po rzucie kostki a nie przed ; d |
|
Alcarin Temat założony przez niniejszego użytkownika |
» 2012-01-08 17:38:03 Z tego co zauważyłem przy debuggowaniu to problem lezy w czyszczeniu bufora klawiatury.
Gracz wybiera kolor: 1 2 3 4 a nastepnie w programie gracz wybiera nr pionka tymi samymi przyciskami.
clear_keybuf(); sie nie sprawdza (chyba ze zle je wprowadzam?). W jakis inny sposob moge wyczyscic bufor klawiatury czy musze uzyc w obu przypadkach innych znakow ?
W tym momencie while( nrpionka == 0 ) { clear_keybuf(); klawisz2 = readkey(); if( klawisz2 == 7217 ) { nrpionka = 1; }
klawisz2 = 0, ale gdy dojdzie do linijki if pod klawisz2 podstawiana jest wczesniej przycisnieta przezemnie liczba, bufor klawiatury sie nie czysci. Co robie zle ?
A tutaj wczesniejsze wczytywanie while( human == 0 ) { klawisz = readkey(); if( klawisz == 7217 ) { textout_ex( screen, font, "Wybrales kolor zolty", 20, 200, makecol( 255, 255, 255 ), - 1 ); human = 1; } if( klawisz == 7474 ) { textout_ex( screen, font, "Wybrales kolor zielony", 20, 200, makecol( 255, 255, 255 ), - 1 ); human = 2; } if( klawisz == 7731 ) { textout_ex( screen, font, "Wybrales kolor niebieski", 20, 200, makecol( 255, 255, 255 ), - 1 ); human = 3; } if( klawisz == 7988 ) { textout_ex( screen, font, "Wybrales kolor czerwony", 20, 200, makecol( 255, 255, 255 ), - 1 ); human = 4; } } readkey(); |
|
pekfos |
» 2012-01-08 17:40:10 podaj kod z clear_keybuf().
Czyść bufor klawiatury przed każdym readkey(). |
|
Alcarin Temat założony przez niniejszego użytkownika |
» 2012-01-08 17:46:05 I kolejny problem rozwiązany, dziękuję ; ) |
|
« 1 » |