SHARE
TWEET

Untitled

a guest Apr 19th, 2019 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. #pragma region
  5. void print(string text);
  6. void print(string text, int num);
  7. void print(string text, int num, string text2);
  8. void printBoard(int arr[][3], int sizeX, int sizeY);
  9. void drawBoard(char arr[][3]);
  10. void start(char ans);
  11. bool logic(int _input, int logicBoard[][3], int _pl, int _round);
  12. void boardManager(int type);
  13. void visualMng(int _input, char _board[][3], char _pl, int _round);
  14. #pragma endregion
  15. int main() {
  16.     char answer;
  17.     print("Do you wish to start the game ? y/n ");
  18.     cin >> answer;
  19.     system("cls");
  20.     start(answer);
  21.    
  22.    
  23.  
  24.  
  25.     cin.get();
  26.     cin.get();
  27. }
  28.  
  29. #pragma region
  30. void print(string text)
  31. {
  32.     cout << text << endl;
  33. }
  34. void print(string text, int num)
  35. {
  36.     cout << text << " " << num << endl;
  37. }
  38. void print(string text, int num, string text2)
  39. {
  40.     cout << text << " " << num << " " << text2 << endl;
  41. }
  42. void printBoard(int arr[][3], int sizeX, int sizeY)
  43. {
  44.     for (int y = 0; y < sizeY; y++)
  45.     {
  46.         for (int x = 0; x < sizeX; x++)
  47.         {
  48.             cout << arr[x][y] << " ";
  49.         }
  50.         cout << endl;
  51.     }
  52. }
  53. void drawBoard(char arr[][3]) {
  54.     print("     |     |     ");
  55.     cout << "  " << arr[0][0] << "  |  " << arr[1][0] << "  |  " << arr[2][0] << endl;
  56.     print("_____|_____|_____");
  57.     print("     |     |     ");
  58.     cout << "  " << arr[0][1] << "  |  " << arr[1][1] << "  |  " << arr[2][1] << endl;
  59.     print("_____|_____|_____");
  60.     print("     |     |     ");
  61.     cout << "  " << arr[0][2] << "  |  " << arr[1][2] << "  |  " << arr[2][2] << endl;
  62.     print("     |     |     ");
  63. }
  64. #pragma endregion
  65.  
  66. void start(char ans) {
  67.     char answers;
  68.     switch (ans)
  69.     {
  70.     case'y':
  71.         print("Choose which side you want to play on : X / O");
  72.         cin >> answers;
  73.         if (answers == 'x' || answers == 'X')
  74.             boardManager(1);
  75.         else if (answers == 'o' || answers == 'O')
  76.             boardManager(2);
  77.         else
  78.             print("Incorrect answer");
  79.         break;
  80.     case'n':
  81.         print("Okay bb");
  82.         break;
  83.     default:
  84.         print("Incorrect answer");
  85.         break;
  86.     }
  87.  
  88. }
  89.  
  90. bool logic(int _input, int logicBoard[][3], int _pl, int _round)
  91. {
  92.     bool gameOn = true;
  93.     int xmatcher;
  94.     int ymatcher;
  95.     int zmatcher;
  96.    
  97.     switch (_input)
  98.     {
  99.     case 1:
  100.         if (_round % 2 == 0)
  101.         {
  102.             if (logicBoard[0][2] != 1 || logicBoard[0][2] != 2)
  103.                 logicBoard[0][2] = 1;
  104.             break;
  105.         }
  106.         else {
  107.             if (logicBoard[0][2] != 1 || logicBoard[0][2] != 2)
  108.                 logicBoard[0][2] = 2;
  109.             break;
  110.         }
  111.     case 2:
  112.         if (_round % 2 == 0)
  113.         {
  114.             if (logicBoard[1][2] != 1 || logicBoard[1][2] != 2)
  115.                 logicBoard[1][2] = 1;
  116.             break;
  117.         }
  118.         else {
  119.             if (logicBoard[1][2] != 1 || logicBoard[1][2] != 2)
  120.                 logicBoard[1][2] = 2;
  121.             break;
  122.         }
  123.     case 3:
  124.         if (_round % 2 == 0)
  125.         {
  126.             if (logicBoard[2][2] != 1 || logicBoard[2][2] != 2)
  127.                 logicBoard[2][2] = 1;
  128.             break;
  129.         }
  130.         else {
  131.             if (logicBoard[2][2] != 1 || logicBoard[2][2] != 2)
  132.                 logicBoard[2][2] = 2;
  133.             break;
  134.         }
  135.     case 4:
  136.         if (_round % 2 == 0)
  137.         {
  138.             if (logicBoard[0][1] != 1 || logicBoard[0][1] != 2)
  139.                 logicBoard[0][1] = 1;
  140.             break;
  141.         }
  142.         else {
  143.             if (logicBoard[0][1] != 1 || logicBoard[0][1] != 2)
  144.                 logicBoard[0][1] = 2;
  145.             break;
  146.         }
  147.     case 5:
  148.         if (_round % 2 == 0)
  149.         {
  150.             if (logicBoard[1][1] != 1 || logicBoard[1][1] != 2)
  151.                 logicBoard[1][1] = 1;
  152.             break;
  153.         }
  154.         else {
  155.             if (logicBoard[1][1] != 1 || logicBoard[1][1] != 2)
  156.                 logicBoard[1][1] = 2;
  157.             break;
  158.         }
  159.     case 6:
  160.         if (_round % 2 == 0)
  161.         {
  162.             if (logicBoard[2][1] != 1 || logicBoard[2][1] != 2)
  163.                 logicBoard[2][1] = 1;
  164.             break;
  165.         }
  166.         else {
  167.             if (logicBoard[2][1] != 1 || logicBoard[2][1] != 2)
  168.                 logicBoard[2][1] = 2;
  169.             break;
  170.         }
  171.     case 7:
  172.         if (_round % 2 == 0)
  173.         {
  174.             if (logicBoard[0][0] != 1 || logicBoard[0][0] != 2)
  175.                 logicBoard[0][0] = 1;
  176.             break;
  177.         }
  178.         else {
  179.             if (logicBoard[0][0] != 1 || logicBoard[0][0] != 2)
  180.                 logicBoard[0][0] = 2;
  181.             break;
  182.         }
  183.     case 8:
  184.         if (_round % 2 == 0)
  185.         {
  186.             if (logicBoard[1][0] != 1 || logicBoard[1][0] != 2)
  187.                 logicBoard[1][0] = 1;
  188.             break;
  189.         }
  190.         else {
  191.             if (logicBoard[1][0] != 1 || logicBoard[1][0] != 2)
  192.                 logicBoard[1][0] = 2;
  193.             break;
  194.         }
  195.     case 9:
  196.         if (_round % 2 == 0)
  197.         {
  198.             if (logicBoard[2][0] != 1 || logicBoard[2][0] != 2)
  199.                 logicBoard[2][0] = 1;
  200.             break;
  201.         }
  202.         else {
  203.             if (logicBoard[2][0] != 1 || logicBoard[2][0] != 2)
  204.                 logicBoard[2][0] = 2;
  205.             break;
  206.         }
  207.     default:
  208.         break;
  209.     }
  210.  
  211.  
  212.     if (_round > 4)
  213.     {
  214.         if (_round % 2 == 0) {
  215.             zmatcher = logicBoard[0][0] + logicBoard[1][1] + logicBoard[2][2];
  216.             if (zmatcher < 3)
  217.                 zmatcher = 0;
  218.             zmatcher = logicBoard[0][2] + logicBoard[1][1] + logicBoard[2][0];
  219.             if (zmatcher < 3)
  220.                 zmatcher = 0;
  221.             for (int y = 0; y < 3; y++)
  222.             {
  223.                 ymatcher = logicBoard[0][y] + logicBoard[1][y] + logicBoard[2][y];
  224.             }
  225.             if (ymatcher < 3)
  226.                 ymatcher = 0;
  227.             for (int x = 0; x < 3; x++)
  228.             {
  229.                 xmatcher = logicBoard[x][0] + logicBoard[x][1] + logicBoard[x][2];
  230.             }
  231.             if (xmatcher < 3)
  232.                 xmatcher = 0;
  233.  
  234.             if (xmatcher == 3 || ymatcher == 3 || zmatcher == 3) {
  235.                 print("Game Over, Player2 won the game.");
  236.                 gameOn = false;
  237.             }
  238.         }
  239.         else {
  240.             zmatcher = logicBoard[0][0] + logicBoard[1][1] + logicBoard[2][2];
  241.             if (zmatcher < 6)
  242.                 zmatcher = 0;
  243.             zmatcher = logicBoard[0][2] + logicBoard[1][1] + logicBoard[2][0];
  244.             if (zmatcher < 6)
  245.                 zmatcher = 0;
  246.             for (int y = 0; y < 3; y++)
  247.             {
  248.                 ymatcher = logicBoard[0][y] + logicBoard[1][y] + logicBoard[2][y];
  249.             }
  250.             if (ymatcher < 6)
  251.                 ymatcher = 0;
  252.             for (int x = 0; x < 3; x++)
  253.             {
  254.                 xmatcher = logicBoard[x][0] + logicBoard[x][1] + logicBoard[x][2];
  255.             }
  256.             if (xmatcher < 6)
  257.                 xmatcher = 0;
  258.  
  259.             if (xmatcher == 6 || ymatcher == 6 || zmatcher == 6) {
  260.                 print("Game Over, Player1 won the game.");
  261.                 gameOn = false;
  262.             }
  263.            
  264.         }
  265.     }
  266.     else if (_round == 9) {
  267.         print("Game over, play again?");
  268.     }
  269.     return gameOn;
  270. }
  271.  
  272. void visualMng(int _input, char _board[][3],char _pl, int _round)
  273. {
  274.     int endRound = 1;
  275.     bool nextRound = true;
  276.    
  277.     while (nextRound) {
  278.         switch (_input)
  279.         {
  280.         case 1:
  281.             if (_round > 1) {
  282.                 if (_board[0][2] != ' ')
  283.                 {
  284.                     print("Position already taken :) Enter different position: ");
  285.                     nextRound = false;
  286.                 }
  287.                 else {
  288.                     _board[0][2] = _pl;
  289.                     system("cls");
  290.                     endRound++;
  291.                 }
  292.             }
  293.             else {
  294.                 _board[0][2] = _pl;
  295.                 system("cls");
  296.                 endRound++;
  297.             }
  298.             break;
  299.         case 2:
  300.             if (_round > 1) {
  301.                 if (_board[1][2] != ' ')
  302.                 {
  303.                     print("Position already taken :) Enter different position: ");
  304.                     nextRound = false;
  305.                 }
  306.                 else {
  307.                     _board[1][2] = _pl;
  308.                     system("cls");
  309.                     endRound++;
  310.                 }
  311.             }
  312.             else {
  313.                 _board[1][2] = _pl;
  314.                 system("cls");
  315.                 endRound++;
  316.             }
  317.             break;
  318.         case 3:
  319.             if (_round > 1) {
  320.                 if (_board[2][2] != ' ')
  321.                 {
  322.                     print("Position already taken :) Enter different position: ");
  323.                     nextRound = false;
  324.                 }
  325.                 else {
  326.                     _board[2][2] = _pl;
  327.                     system("cls");
  328.                     endRound++;
  329.                 }
  330.             }
  331.             else {
  332.                 _board[2][2] = _pl;
  333.                 system("cls");
  334.                 endRound++;
  335.             }
  336.             break;
  337.         case 4:
  338.             if (_round > 1) {
  339.                 if (_board[0][1] != ' ')
  340.                 {
  341.                     print("Position already taken :) Enter different position: ");
  342.                     nextRound = false;
  343.                 }
  344.                 else {
  345.                     _board[0][1] = _pl;
  346.                     system("cls");
  347.                
  348.                     endRound++;
  349.                 }
  350.             }
  351.             else {
  352.                 _board[0][1] = _pl;
  353.                 system("cls");
  354.                
  355.                 endRound++;
  356.             }
  357.             break;
  358.         case 5:
  359.             if (_round > 1) {
  360.                 if (_board[1][1] != ' ')
  361.                 {
  362.                     print("Position already taken :) Enter different position: ");
  363.                     nextRound = false;
  364.                 }
  365.                 else {
  366.                     _board[1][1] = _pl;
  367.                     system("cls");
  368.                    
  369.                     endRound++;
  370.                 }
  371.             }
  372.             else {
  373.                 _board[1][1] = _pl;
  374.                 system("cls");
  375.            
  376.                 endRound++;
  377.             }
  378.             break;
  379.         case 6:
  380.             if (_round > 1) {
  381.                 if (_board[2][1] != ' ')
  382.                 {
  383.                     print("Position already taken :) Enter different position: ");
  384.                     nextRound = false;
  385.                 }
  386.                 else {
  387.                     _board[2][1] = _pl;
  388.                     system("cls");
  389.                
  390.                     endRound++;
  391.                 }
  392.             }
  393.             else {
  394.                 _board[2][1] = _pl;
  395.                 system("cls");
  396.            
  397.                 endRound++;
  398.             }
  399.             break;
  400.         case 7:
  401.             if (_round > 1) {
  402.                 if (_board[0][0] != ' ')
  403.                 {
  404.                     print("Position already taken :) Enter different position: ");
  405.                     nextRound = false;
  406.                 }
  407.                 else {
  408.                     _board[0][0] = _pl;
  409.                     system("cls");
  410.                     endRound++;
  411.                 }
  412.             }
  413.             else {
  414.                 _board[0][0] = _pl;
  415.                 system("cls");
  416.  
  417.                 endRound++;
  418.             }
  419.             break;
  420.         case 8:
  421.             if (_round > 1) {
  422.                 if (_board[1][0] != ' ')
  423.                 {
  424.                     print("Position already taken :) Enter different position: ");
  425.                     nextRound = false;
  426.                 }
  427.                 else {
  428.                     _board[1][0] = _pl;
  429.                     system("cls");
  430.  
  431.                     endRound++;
  432.                 }
  433.             }
  434.             else {
  435.                 _board[1][0] = _pl;
  436.                 system("cls");
  437.  
  438.                 endRound++;
  439.             }
  440.             break;
  441.         case 9:
  442.             if (_round > 1) {
  443.                 if (_board[2][0] != ' ')
  444.                 {
  445.                     print("Position already taken :) Enter different position: ");
  446.                     nextRound = false;
  447.                 }
  448.                 else {
  449.                     _board[2][0] = _pl;
  450.                     system("cls");
  451.  
  452.                     endRound++;
  453.                 }
  454.             }
  455.             else {
  456.                 _board[2][0] = _pl;
  457.                 system("cls");
  458.  
  459.                 endRound++;
  460.             }
  461.             break;
  462.  
  463.         default:
  464.             break;
  465.         }
  466.         if (nextRound = false)
  467.         {
  468.             cin >> _input;
  469.         }
  470.     }
  471. }
  472.  
  473. void boardManager(int type) {
  474.     char visualBoard[3][3];
  475.     int logicBoard[3][3];
  476.     char p1;
  477.     char p2;
  478.     int logicalP1;
  479.     int logicalP2;
  480.     int input;
  481.     int round = 0;
  482.     bool gameState = true;
  483.     //creates visual board
  484.     for (int x = 0; x < 3; x++)
  485.     {
  486.         for (int y = 0; y < 3; y++)
  487.         {
  488.             visualBoard[x][y] = ' ';
  489.         }
  490.     }
  491.     //creates logical board
  492.     for (int x = 0; x < 3; x++)
  493.     {
  494.         for (int y = 0; y < 3; y++)
  495.         {
  496.             logicBoard[x][y] = 0;
  497.         }
  498.     }
  499.  
  500.     //chooses player side
  501.     switch (type)
  502.     {
  503.     case 1:
  504.         print("Player 1 is X you may begin to play now.");
  505.         p1 = 'X';
  506.         p2 = 'O';
  507.         logicalP1 = 1;
  508.         logicalP2 = 2;
  509.         break;
  510.     case 2:
  511.         print("Player 1 is O you may begin to play now.");
  512.         p1 = 'O';
  513.         p2 = 'X';
  514.         logicalP1 = 2;
  515.         logicalP2 = 1;
  516.         break;
  517.     default:
  518.         break;
  519.     }
  520.    
  521.     system("cls");
  522.     drawBoard(visualBoard);
  523.     print("Use numpad on your keyboard to play the game, when you choose your destination press enter.");
  524.     while (gameState)
  525.     {
  526.        
  527.         cin >> input;
  528.         if (round % 2 == 0) {
  529.             print("Player 1's turn:");
  530.             visualMng(input, visualBoard, p1, round);
  531.             logic(input, logicBoard, logicalP1 , round);
  532.         }
  533.         else {
  534.             print("Player 2's turn");
  535.             visualMng(input, visualBoard, p2, round);
  536.             logic(input, logicBoard, logicalP2, round);
  537.         }
  538.         drawBoard(visualBoard);
  539.         print("Use numpad on your keyboard to play the game, when you choose your destination press enter.");
  540.         round++;
  541.         gameState = logic(input, logicBoard, p1, round);
  542.     }
  543. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top