Salve,
questa getchar si comporta in modo molto molto molto anomalo. In pratica è non bloccante anche se io non ho fatto nulla per far si che lo fosse..
Ho provato pure a mettere fflush(stdin) all'inizio ma niente da fare
Qualcuno ha idea da cosa possa dipendere?codice:/* Freccia sinsitra */ #define SINISTRA 68 /* Freccia destra */ #define DESTRA 67 /* Tasto per uscire dal gioco*/ #define TASTO_USCITA 113 //fflush(stdin); c=getchar(); //if (c==0) c=getchar(); switch(c) { case TASTO_USCITA: /*scrivi sul buffer (accedendo tramite l'opportuno mutex e verificando se vi siano posizioni disponibili per la scrittura)relativo alla comunicazione con controllo i dati che indicano che il giocatore ha scelto di uscire dal gioco*/ pos_niente.tipo = USCITA; in_esecuzione = false;/*esci dal ciclo esterno e quindi fai finire il thread*/ break; /*se si preme la freccia sinistra la nave si sposta a sinistra*/ case SINISTRA: /*se la nave è in una posizione dello schermo dove può stare*/ if(pos_nave.x > DISTANZA_DAI_LATI) pos_nave.x -= SPOSTAMENTO_NAVE; /*sposta a sinistra la nave*/ scrivi_su_buffer(pos_nave); break; /*se si preme la freccia destra la nave si sposta a destra*/ case DESTRA: /*se la nave è in una posizione dello schermo dove può stare*/ if(pos_nave.x < MAXX-DISTANZA_DAI_LATI) pos_nave.x += SPOSTAMENTO_NAVE;/*sposta a destra la nave*/ scrivi_su_buffer(pos_nave); break; //default: //sleep(1); //pos_nave.x -= SPOSTAMENTO_NAVE; }


Rispondi quotando