gestione tasti C

Pubblicità

niciz

Utente Attivo
Messaggi
179
Reazioni
12
Punteggio
38
Ciao a tutti.. premetto che sono un pò inesperto e non sò bene dove girarmi nel linguaggio C..
Sto facendo una specie di space impact ma sono impacciato nell'implementare la funzione pausa.. Vorrei che quando si premesse P il gioco si fermasse per poi riprendere quando si preme ancora P..
Il problema è che quando io premo P il tasto rimane in memoria nel buffer (credo) e siccome il codice della funzione è stutturato così:

Codice:
bool pause=false;
while(key[KEY_P]||pause)
        {    pause=true;
             textout(buffer,font,"PAUSA",(wschermo/2)-20,hschermo/2,bianco);
             blit(buffer,screen,0,0,0,0,wschermo,hschermo);  nello schermo
             if(key[KEY_P])
             {    pause=false;                      
             }
        }

la funzione è infinita.. Ho provato anche ad utilizzare fflush(stdin) ma senza alcun risultato.. qualcuno sà darmi una mano??
un altra cosa.. Dev mi dice che textout è deprecato quale comando posso usare in alternativa?
 
È normale che il ciclo sia infinito, perché la condizione di controllo di while è sempre vera: quando setti pause su false, la condizione risulta ancora vera perché key[KEY_P] è vero (hai un || e non un &&).
Se vuoi uscire dal while, quando si è nel ciclo e dopo che si preme ancora P, scrivi così (senza nessuna variabile pause):

if(key[KEY_P])
break;

Altra cosa, ti serve un input non bufferizzato per i tasti. Per intenderci: getchar() non va bene, devi usare getch() che però non è una funzione ANSI. L'uso di input non bufferizzato richiede qualche attenzione in più qualora si premano i tasti speciali (come i cursori freccia, F1...F12, pag_up pag_down etc.), perché questi sono tasti che hanno una specie di doppio codice ASCII.
 
Pubblicità
Pubblicità
Indietro
Top