Advertisement
informaticage

TicTacToe

Apr 25th, 2016
253
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. // A -> X
  9. // B -> O
  10. {
  11.     bool filetto = false;
  12.     char table[3][3];
  13.     char giocatore = 'A';
  14.  
  15.     /* Riempie la matrice con - */
  16.     memset(table, '-', 9);
  17.     do
  18.     {
  19.         // Riga e colonna in input
  20.         unsigned short int riga, colonna;
  21.  
  22.         for(int riga = 0; riga < 3; riga++)
  23.         // Stampa la griglia di gioco
  24.         {
  25.             for(int colonna = 0; colonna < 3; colonna++)
  26.                 cout << table[riga][colonna] << " ";
  27.             // Va a capo a fine riga
  28.             cout << endl;
  29.         }
  30.  
  31.         // Indica il giocatore e chiede riga e colonna da giocare
  32.         cout << "Turno giocatore " << giocatore << endl;
  33.         cout << "Inserire [riga] [colonna] 1..3: ";
  34.         cin >> riga >> colonna;
  35.  
  36.         if(!(riga > 0 && riga <= 3 && colonna > 0 && colonna <= 3))
  37.         // Se riga e colonna non sono compresi tra 0 e 3
  38.             continue; // Torna a inizio ciclo while ricominciando da capo
  39.  
  40.         // L'utente inserire da 1 a 3 ma la matrice esista da 0 a 2
  41.         riga--;
  42.         colonna--;
  43.  
  44.         if(table[riga][colonna] == '-')
  45.         // Se non è stata già giocata
  46.         {
  47.             if(giocatore == 'A')
  48.             // Se è il turno di A
  49.             {
  50.                 table[riga][colonna] = 'X';
  51.                 giocatore = 'B';
  52.             }
  53.             else
  54.             // Se è il turno di B
  55.             {
  56.                 table[riga][colonna] = 'O';
  57.                 giocatore = 'A';
  58.             }
  59.         }
  60.  
  61.         // Contollo della vittoria
  62.         // Controllo riga per riga
  63.         for (riga = 0; riga < 3; riga++)
  64.             /*
  65.                 Compara gli elementi sulla stessa riga,
  66.                 vittoria in caso siano 3 uguali sulla stessa riga ex. X X X
  67.             */
  68.             if(table[riga][0] == table[riga][1] && table[riga][1] == table[riga][2])
  69.             {
  70.                 // Ignora il carattere di default '-'
  71.                 if(table[riga][0] != '-')
  72.                 {
  73.                     system("cls");
  74.                     // Vittoria del giocatore che ha fatto il turno
  75.                     cout << "Vittoria del giocatore " << giocatore << endl;
  76.                     filetto = true;
  77.                 }
  78.             }
  79.  
  80.         // Controllo colonna per colonna
  81.         for (colonna = 0; colonna < 3; colonna++)
  82.             /*
  83.                 Compara gli elementi sulla stessa colonna,           ex. X
  84.                                                                          X
  85.                 vittoria in caso siano 3 uguali sulla stessa colonna     X
  86.             */
  87.             if(table[0][colonna] == table[1][colonna] && table[1][colonna] == table[2][colonna])
  88.             {
  89.                 if(table[0][colonna] != '-')
  90.                 {
  91.                     system("cls");
  92.                     // Vittoria del giocatore che ha fatto il turno
  93.                     cout << "Vittoria del giocatore " << giocatore << endl;
  94.                     filetto = true;
  95.                 }
  96.             }
  97.  
  98.         // Controllo delle diagonali
  99.         if(table[0][0] == table[1][1] && table[1][1] == table[2][2] ||
  100.            table[2][0] == table[1][1] && table[1][1] == table[0][2])
  101.         {
  102.             if(table[1][1] != '-')
  103.             {
  104.                 system("cls");
  105.                 // Vittoria del giocatore che ha fatto il turno
  106.                 cout << "Vittoria del giocatore " << giocatore << endl;
  107.                 filetto = true;
  108.             }
  109.         }
  110.  
  111.         // Aspetta che l'utente prema un tasto per continuare
  112.         system("pause");
  113.         // Pulisce lo schermo dal vecchio output
  114.         system("cls");
  115.     }while(!filetto);
  116.  
  117.     // Fine dell'esecuzione
  118.     return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement