Mentosan

Game: Tic tac Toe (unfinished)

May 27th, 2018
82
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stdafx.h"
  2. #include "stdlib.h"
  3. #include <iostream>
  4.  
  5. char tablaJOC[3][3];
  6. int pozitieLinie, pozitieColoana, castigator;
  7. int egalitate = 0;
  8. char Jucator = 'X';
  9.  
  10. using namespace std;
  11. #define PATRATELE 9
  12.  
  13. void Culoare_Consola();
  14. int Detectare_Jucator(char Jucator);
  15. int Joc_Egalitate();
  16.  
  17. void Afisare_Tabla(char t[3][3]) {
  18.     system("CLS");
  19.     for (int i = 0; i < 3; i++) {
  20.         for (int j = 0; j < 3; j++) {
  21.             if (i == pozitieLinie && j == pozitieColoana)
  22.                 cout << "*";
  23.             else
  24.                 cout << t[i][j];
  25.  
  26.             if (j < 2)
  27.                 cout << "|";
  28.         }
  29.         cout << endl;
  30.         if (i < 2) {
  31.             for (int a = 0; a < 5; a++)
  32.                 cout << "-";
  33.         }
  34.         cout << endl;
  35.     }
  36.     cout << " Randul lui " << Jucator << ": ";
  37. }
  38.  
  39. bool Joc_Terminat(char t[3][3], char Jucator) {
  40.     if (Jucator == 'X') {
  41.  
  42.         if (t[0][0] == 'X' && t[1][1] == 'X' && t[2][2] == 'X') {
  43.             return true;
  44.         }
  45.         else {
  46.             if(t[0][2] == 'X' && t[1][1] == 'X' && t[2][0] == 'X') {
  47.                 return true;
  48.             }
  49.             else {
  50.                 if ((t[0][0] == 'X' && t[0][1] == 'X' && t[0][2] == 'X') || (t[1][0] == 'X' && t[1][1] == 'X' && t[1][2] == 'X') || (t[2][0] == 'X' && t[2][1] == 'X' && t[2][2] == 'X')) {
  51.                     return true;
  52.                 }
  53.                 else {
  54.                     if ((t[0][0] == 'X' && t[1][0] == 'X' && t[2][0] == 'X') || (t[0][1] == 'X' && t[1][1] == 'X' && t[2][1] == 'X') || (t[0][2] == 'X' && t[1][2] == 'X' && t[2][2] == 'X')) {
  55.                         return true;
  56.                     }
  57.                     else {
  58.                         for (int i = 0; i < 3; i++) {
  59.                             for (int j = 0; j < 3; j++) {
  60.                                 if ((t[i][j] == 'X') || (t[i][j] == 'O'))
  61.                                     egalitate++;
  62.                             }
  63.                         }
  64.  
  65.                         if (egalitate == PATRATELE - 1)
  66.                             return true;
  67.                         else
  68.                             return false;
  69.                     }
  70.                 }
  71.             }
  72.         }
  73.  
  74.     }else if (Jucator == 'O') {
  75.  
  76.         if (t[0][0] == 'O' && t[1][1] == 'O' && t[2][2] == 'O') {
  77.             return true;
  78.         }
  79.         else {
  80.             if (t[0][2] == 'O' && t[1][1] == 'O' && t[2][0] == 'O') {
  81.                 return true;
  82.             }
  83.             else {
  84.                 if ((t[0][0] == 'O' && t[0][1] == 'O' && t[0][2] == 'O') || (t[1][0] == 'O' && t[1][1] == 'O' && t[1][2] == 'O') || (t[2][0] == 'O' && t[2][1] == 'O' && t[2][2] == 'O')) {
  85.                     return true;
  86.                 }
  87.                 else {
  88.                     if ((t[0][0] == 'O' && t[1][0] == 'O' && t[2][0] == 'O') || (t[0][1] == 'O' && t[1][1] == 'O' && t[2][1] == 'O') || (t[0][2] == 'O' && t[1][2] == 'O' && t[2][2] == 'O')) {
  89.                         return true;
  90.                     }
  91.                     else {
  92.                         for (int i = 0; i < 3; i++) {
  93.                             for (int j = 0; j < 3; j++) {
  94.                                 if ((t[i][j] == 'X') || (t[i][j] == 'O'))
  95.                                     egalitate++;
  96.                             }
  97.                         }
  98.  
  99.                         if (egalitate == PATRATELE - 1)
  100.                             return true;
  101.                         else
  102.                             return false;
  103.                     }
  104.                 }
  105.             }
  106.         }
  107.  
  108.     }
  109. }
  110.  
  111. int main(void) {
  112.  
  113.     Culoare_Consola();
  114.  
  115.     Afisare_Tabla(tablaJOC);
  116.     do {
  117.         char miscare;
  118.         cin >> miscare;
  119.  
  120.         if (miscare == 's')
  121.             pozitieLinie = (pozitieLinie + 1) % 3;
  122.         if (miscare == 'w')
  123.             pozitieLinie = (pozitieLinie - 1 + 3) % 3;
  124.         if (miscare == 'd')
  125.             pozitieColoana = (pozitieColoana + 1) % 3;
  126.         if (miscare == 'a')
  127.             pozitieColoana = (pozitieColoana - 1 + 3) % 3;
  128.         if (miscare == 'p') {
  129.             if (tablaJOC[pozitieLinie][pozitieColoana] == 'X' || tablaJOC[pozitieLinie][pozitieColoana] == 'O') {
  130.                 cout << " Este deja o mutare, alege alta! ";
  131.             }
  132.             else {
  133.                 tablaJOC[pozitieLinie][pozitieColoana] = Jucator;
  134.                 if (Jucator == 'X')
  135.                     Jucator = 'O';
  136.                 else
  137.                     Jucator = 'X';
  138.                 Joc_Terminat(tablaJOC, Jucator);
  139.                 castigator = Detectare_Jucator(Jucator);
  140.             }
  141.         }
  142.  
  143.         Afisare_Tabla(tablaJOC);
  144.        
  145.  
  146.     } while (Joc_Terminat(tablaJOC, Jucator) == false);
  147.  
  148.     switch (castigator) {
  149.     case 1: {
  150.         cout << "Playerul 1 (X) a castigat!" << endl;
  151.         break;
  152.     }
  153.     case 2: {
  154.         cout << "Playerul 2 (O) a castigat! " << endl;
  155.         break;
  156.     }
  157.     default: {
  158.         cout << "EGALITATE!" << endl;   //Mai este de facut doar partea in care este EGALITATE, ROUND DRAW
  159.     }
  160.     }
  161.  
  162.     system("PAUSE");
  163.     return 0;
  164. }
  165.  
  166. void Culoare_Consola() {
  167.     system("COLOR 03");
  168. }
  169.  
  170. int Detectare_Jucator(char Jucator) {
  171.     int player;
  172.     //1 - X, 2 - O
  173.  
  174.     if (Jucator == 'X') {
  175.         player = 1;
  176.     }else if (Jucator == 'O') {
  177.         player = 2;
  178.     }
  179.        
  180.     return player;
  181. }
  182.  
  183. int Joc_Egalitate() {
  184.  
  185.     return 2;
  186. }
RAW Paste Data