Advertisement
nicoviale_

Untitled

Jun 16th, 2023
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.75 KB | None | 0 0
  1. void gioca_bang(Giocatore giocatore[] ,int *numero_giocatori, int *giocatore_corrente,
  2.                 Mazzo *mazzo_pesca, Mazzo * mazzo_scarti, int indice_carta, int turno)
  3. {
  4.     int vittima;
  5.  
  6.     //l'array viene utilizzato per pooter controllare facilmente chi può essere passato e chi no
  7.     //se viene stampato, ha passato tutti i controlli e può anche essere scelto come target
  8.     int array_giocatori_possibili[*numero_giocatori];
  9.  
  10.     //inizializzo l'array a NON VALIDO, se poi un giocatore passa il controllo lo aggiorno
  11.     for(int i=0; i<*numero_giocatori; i++)
  12.     {
  13.         array_giocatori_possibili[i]=NON_VALIDO;
  14.     }
  15.  
  16.     //scarto immediatamente la carta bang dal mazzo mano
  17.     scarta(&giocatore[*giocatore_corrente], indice_carta, mazzo_scarti);
  18.  
  19.     pulisci_schermo();
  20.     printf("  ____          _   _  _____ _ \n"
  21.            " |  _ \\   /\\   | \\ | |/ ____| |\n"
  22.            " | |_) | /  \\  |  \\| | |  __| |\n"
  23.            " |  _ < / /\\ \\ | . ` | | |_ | |\n"
  24.            " | |_) / ____ \\| |\\  | |__| |_|\n"
  25.            " |____/_/    \\_\\_| \\_|\\_____(_)\n"
  26.            "                               \n"
  27.            "                               ");
  28.  
  29.  
  30.     printf("\n\nPuoi sparare ai seguenti giocatori: ");
  31.     for(int i=0; i<*numero_giocatori; i++)
  32.     {
  33.  
  34.         //mostro un giocatore da sparare solo se è diverso dal giocatore corrente e la sua distanza dal
  35.         //bersaglio è minore o uguale alla gittata della propria arma
  36.         if(i!=*giocatore_corrente)
  37.         {
  38.             if(distanza_tra(giocatore,*giocatore_corrente,
  39.                             i, *numero_giocatori )
  40.                <= giocatore[*giocatore_corrente].gittata )
  41.             {
  42.                 printf("\ngiocatore %d : %s \t ha %d vite", i+1,
  43.                        giocatore[i].nome_utente, giocatore[i].vite);
  44.  
  45.                 array_giocatori_possibili[i]=VALIDO;
  46.             }
  47.         }
  48.     }
  49.  
  50.     //controllo prima che l'indice sia in range, cosi da non sforare quando controllo l'array giocatori possibili
  51.     do{
  52.         printf("\n\na chi vuoi sparare? (inserisci numero corrispondente)  ");
  53.         scanf(" %d", &vittima);
  54.         vittima--;
  55.  
  56.         if(  vittima<0 || vittima>*numero_giocatori-1 ||
  57.              array_giocatori_possibili[vittima]==NON_VALIDO  )
  58.         {
  59.             printf("\nnumero inserito non valido!!");
  60.             getchar();
  61.         }
  62.     }
  63.     while(  vittima<0 || vittima>*numero_giocatori-1 ||
  64.             array_giocatori_possibili[vittima]==NON_VALIDO  );
  65.  
  66.     log_(giocatore, BANG,  *giocatore_corrente,  vittima, NON_NECESSARIO, turno);
  67.  
  68.     //funzione che gestisce lo sparo effettivo
  69.     spara_a(giocatore, numero_giocatori, giocatore_corrente, vittima, mazzo_pesca, mazzo_scarti , turno);
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement