Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Problem z zczytywaniem znaku

Ostatnio zmodyfikowano 2012-01-08 17:46
Autor Wiadomość
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.



C/C++
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
P-47567
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
C/C++
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
C/C++
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();
P-47613
pekfos
» 2012-01-08 17:40:10
podaj kod z clear_keybuf().

Czyść bufor klawiatury przed każdym readkey().
P-47614
Alcarin
Temat założony przez niniejszego użytkownika
» 2012-01-08 17:46:05
I kolejny problem rozwiązany, dziękuję ; )
P-47616
« 1 »
  Strona 1 z 1