(...continuo)

codice:
          case 'o':   /** CASO BOMBA **/
                             
                          bomba=valore_letto; //assegno il nuovo valore di bomba
                          mvaddch(bomba.y-1,bomba.x,' '); //cancello la vecchia posizione

                          /** ----------------------------------- Controllo collisioni ----------------------------------- **/

                          // bomba -> astronave
                          if(bomba.y==MAXY)  //se la bomba ha raggiunto la penultima posizione nello schermo
                            {
                              if(bomba.x==astronave.x)   //verifica se ha colpito l'astronave e in caso affermativo il gioco termina e l'astronave ha perso
                                  GAME_OVER=-1;
                              pthread_cancel(bomba.pid); //uccido il processo bomba
			      pthread_detach(bomba.pid); // e libero la memoria
                            }
                          else //altrimenti
			      {
				attron(COLOR_PAIR(4));
                                mvaddch(bomba.y,bomba.x,bomba.c); //stampo la nuova posizione
			      }
                          break;


          case '$': /** CASO NEMICO **/
                         if(nemico[valore_letto.p].x>=0) // se il nemico è giÃ_ entrato in scena
                             mvaddch(nemico[valore_letto.p].y,nemico[valore_letto.p].x,' ');  // cancello la "vecchia" posizione del nemico
                            
                         nemico[valore_letto.p]=valore_letto; // aggiorno la posizione del nemico
			 attron(COLOR_PAIR(1));
                         mvaddch(nemico[valore_letto.p].y,nemico[valore_letto.p].x,nemico[valore_letto.p].c); // e lo visualizzo

                         /** ----------------------------------- Controllo collisioni ----------------------------------- **/

                         // nemico -> astronave
                         if(nemico[valore_letto.p].y==astronave.y) // se il nemico raggiunge la linea dell'astronave
                            {
                              pthread_cancel(nemico[valore_letto.p].pid); // uccido il nemico
			      pthread_detach(nemico[valore_letto.p].pid); // e libero la memoria
                              pthread_cancel(astronave.pid); // uccido l'astronave
			      pthread_detach(astronave.pid); // e libero la memoria
                              GAME_OVER=-1; // l'astronave ha perso
                            }

                         break;
           

                                     } // fine switch

if(!NEM_VIVI) // se NEM_VIVI è uguale a 0
  GAME_OVER=1; // l'astronave ha vinto

curs_set(0);
refresh();
} // fine do
while(!GAME_OVER);

if(GAME_OVER>0)
  {
    mvaddstr(MAXY/2, MAXX/2-3,"HAI VINTO!");
    refresh();
    fflush(stdin);
    getchar();
  }
else
  {
    mvaddstr(MAXY/2, MAXX/2-3,"HAI PERSO!");
    refresh();
    fflush(stdin);
    getchar();
  }

} // fine Funzione Controllo
fine....so che è lunghetto..ma vi pregoooo!!dateci uno sguardo!