Advertisement
Felanpro

Tic Tac Toe

Feb 18th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.74 KB | None | 0 0
  1. //Tic Tac Toe Game v.1 -- Only works on windows
  2.  
  3. #include <iostream>
  4. #include <stdlib.h>
  5.  
  6. using namespace std;
  7.  
  8. char matrix[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}};
  9. char player = 'X';
  10. string error_message = "This square has already been taken. Try again!";
  11. int break_out_of_while = 0;
  12. char winner_x = 'X';
  13. char winner_o = 'O';
  14. char winner;
  15. int check_draw;
  16. int breaking;
  17.  
  18. void draw()
  19. {
  20.     for(int x = 0; x < 3; x++)
  21.     {
  22.         for(int z = 0; z < 3; z++)
  23.         {
  24.             cout << matrix[x][z] << "  ";
  25.         }
  26.         cout << endl << endl;
  27.     }
  28. }
  29.  
  30. void input()
  31. {
  32.     char inputted_character;
  33.     if(player == 'X')
  34.     {
  35.         cout << "Player X's turn to choose a square: ";
  36.     }
  37.     else
  38.         cout << "Player O's turn to choose a square: ";
  39.     cin >>  inputted_character;
  40.     int z;
  41.  
  42.     if(inputted_character >= '1' && inputted_character <= '9')
  43.     {
  44.         z = inputted_character - '1';
  45.         if(inputted_character >= '1' && inputted_character <= '3')
  46.         {
  47.             if(matrix[0][z] != 'X' && matrix[0][z] != 'O')
  48.                 matrix[0][z] = player;
  49.             else
  50.                 cout << error_message << endl << endl;
  51.         }
  52.         else if(inputted_character >= '4' && inputted_character <= '6')
  53.         {
  54.             if(matrix[1][z - 3] != 'X' && matrix[1][z - 3] != 'O')
  55.                 matrix[1][z - 3] = player;
  56.             else
  57.                 cout << error_message << endl << endl;
  58.  
  59.         }
  60.         else if(inputted_character >= '7' && inputted_character <= '9')
  61.         {
  62.             if(matrix[2][z - 6] != 'X' && matrix[2][z - 6] != 'O')
  63.                 matrix[2][z - 6] = player;
  64.             else
  65.                 cout << error_message << endl << endl;
  66.         }
  67.     }
  68. }
  69.  
  70. void togglePlayer()
  71. {
  72.     if(player == 'X')
  73.         player = 'O';
  74.     else
  75.         player = 'X';
  76. }
  77.  
  78. void checkWin()
  79. {
  80.     int counter = 0;
  81.     breaking = 0;
  82.     int x;
  83.     int z;
  84.  
  85.     while(breaking == 0) //Completely unnecessary while-loop
  86.     { //Start of While-Loop
  87.         //Scan horizontals for X
  88.         for(x = 0; x < 3; x++)
  89.         {
  90.             for(z = 0; z < 3; z++)
  91.             {
  92.                 if(matrix[x][z] == 'X')
  93.                     counter++;
  94.                 else
  95.                     ;
  96.             }
  97.  
  98.             if(counter == 3)
  99.             {
  100.                 breaking = 1;
  101.                 break_out_of_while = 1;
  102.                 winner = winner_x;
  103.             }
  104.  
  105.             counter = 0;
  106.         }
  107.  
  108.         //Scan horizontals for O
  109.         for(x = 0; x < 3; x++)
  110.         {
  111.             for(z = 0; z < 3; z++)
  112.             {
  113.                 if(matrix[x][z] == 'O')
  114.                     counter++;
  115.                 else
  116.                     ;
  117.             }
  118.  
  119.             if(counter == 3)
  120.             {
  121.                 breaking = 1;
  122.                 break_out_of_while = 1;
  123.                 winner = winner_o;
  124.             }
  125.  
  126.             counter = 0;
  127.         }
  128.  
  129.         //Scan verticles for X
  130.         for(x = 0; x < 3; x++)
  131.         {
  132.             for(z = 0; z < 3; z++)
  133.             {
  134.                 if(matrix[z][x] == 'X')
  135.                     counter++;
  136.                 else
  137.                     ;
  138.             }
  139.  
  140.             if(counter == 3)
  141.             {
  142.                 breaking = 1;
  143.                 break_out_of_while = 1;
  144.                 winner = winner_x;
  145.             }
  146.  
  147.             counter = 0;
  148.         }
  149.  
  150.         //Scan verticles for O
  151.         for(x = 0; x < 3; x++)
  152.         {
  153.             for(z = 0; z < 3; z++)
  154.             {
  155.                 if(matrix[z][x] == 'O')
  156.                     counter++;
  157.                 else
  158.                     ;
  159.             }
  160.  
  161.             if(counter == 3)
  162.             {
  163.                 breaking = 1;
  164.                 break_out_of_while = 1;
  165.                 winner = winner_o;
  166.             }
  167.  
  168.             counter = 0;
  169.         }
  170.  
  171.         //Scan diagonals for X
  172.         if(matrix[0][0] == 'X' && matrix[1][1] == 'X' && matrix[2][2] == 'X')
  173.         {
  174.             breaking = 1;
  175.             break_out_of_while = 1;
  176.             winner = winner_x;
  177.         }
  178.         else if(matrix[0][2] == 'X' && matrix[1][1] == 'X' && matrix[2][0] == 'X')
  179.         {
  180.             breaking = 1;
  181.             break_out_of_while = 1;
  182.             winner = winner_x;
  183.         }
  184.  
  185.         //Scan diagonals for O
  186.         if(matrix[0][0] == 'O' && matrix[1][1] == 'O' && matrix[2][2] == 'O')
  187.         {
  188.             breaking = 1;
  189.             break_out_of_while = 1;
  190.             winner = winner_o;
  191.         }
  192.         else if(matrix[0][2] == 'O' && matrix[1][1] == 'O' && matrix[2][0] == 'O')
  193.         {
  194.             breaking = 1;
  195.             break_out_of_while = 1;
  196.             winner = winner_o;
  197.         }
  198.  
  199.         if(breaking == 0)
  200.         {
  201.             for(x = 0; x < 3; x++)
  202.             {
  203.                 for(z = 0; z < 3; z++)
  204.                 {
  205.                     if(matrix[x][z] == 'X' || matrix[x][z] == 'O')
  206.                         counter++;
  207.                 }
  208.             }
  209.             if(counter == 9)
  210.             {
  211.                 check_draw = 1;
  212.                 break_out_of_while = 1;
  213.             }
  214.         }
  215.         counter = 0;
  216.         break; //If no win is detected the loop is just broken out of
  217.  
  218.     } //End of While-Loop
  219. }
  220.  
  221. int main()
  222. {
  223.     while(1)
  224.     {
  225.         checkWin();
  226.         if(break_out_of_while == 1)
  227.         {
  228.             break;
  229.         }
  230.         else
  231.         {
  232.             ;
  233.         }
  234.         draw();
  235.         input();
  236.         togglePlayer();
  237.         system("cls");
  238.     }
  239.     draw();
  240.  
  241.     if(check_draw == 1)
  242.     {
  243.         cout << "Draw!" << endl;
  244.     }
  245.     else if(breaking == 1)
  246.     {
  247.         cout << "Player " << winner << " won the game!" << endl;
  248.     }
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement