Advertisement
BaSs_HaXoR

Tic-Tac-Toe [C++] : College

Feb 18th, 2015
604
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.75 KB | None | 0 0
  1. /*
  2. Tic-Tac-Toe [C++]
  3. Group[3/3] - BaSs_HaXoR & others
  4. Had to use 3 groups code combined to work in one project... collaborative (pair-like) programming.
  5. With that being said, this was an introductory course to C++, and will be messy and inefficient code.
  6. */
  7.  
  8. #include<iostream>
  9.  
  10. using namespace std;
  11. bool playerTurn = true;
  12. const char valPlayer1 = 'X';
  13. const char valPlayer2 = 'O';
  14. char locArray[3][3] {{'1','2','3'}, {'4','5','6'}, {'7','8','9'}};
  15.  
  16. void clearArray()
  17. {
  18.    
  19.     locArray[0][0] = '1';
  20.     locArray[0][1] = '2';
  21.     locArray[0][2] = '3';
  22.     locArray[1][0] = '4';
  23.     locArray[1][1] = '5';
  24.     locArray[1][2] = '6';
  25.     locArray[2][0] = '7';
  26.     locArray[2][1] = '8';
  27.     locArray[2][2] = '9';
  28. }
  29.  
  30. void setPlayerBool(bool tf)
  31. {
  32.     playerTurn = tf;
  33. }
  34.  
  35. void boardDisplay()
  36.     {
  37.         //Below was going to be a more efficient way to display the board.
  38. /*  cout<<"   |   "<<locArray[0,0]<<"   |   ";
  39.     for(int x = 0; x<3; x++)
  40.     {
  41.         cout<<"   |   "<<locArray[0][x];
  42.     }
  43.     for(int y = 0; y <3; x++)
  44.     {
  45.         cout<<"   |   "<<locArray[x][x];
  46.     }*/
  47.     cout << "     |     |     " << endl;
  48.     cout << "  " << locArray[0][0] << "  |  " << locArray[0][1] << "  |  " << locArray[0][2] << endl;
  49.     cout << "     |     |     " << endl;
  50.     cout << "  " << locArray[1][0] << "  |  " << locArray[1][1] << "  |  " << locArray[1][2] << endl;
  51.     cout << "     |     |     " << endl;
  52.     cout << "  " << locArray[2][0] << "  |  " << locArray[2][1] << "  |  " << locArray[2][2] << endl;
  53.     cout << "     |     |     " << endl;
  54.     cout<<endl;
  55. }
  56.  
  57. string currentPlayer()
  58. {
  59.     if(playerTurn == true)
  60.     {
  61.         return "Player 1";
  62.     }
  63.     else
  64.     {
  65.         return "Player 2";
  66.     }
  67. }
  68.  
  69. int winState(char moves[][3])
  70. {
  71.     int returnVal = 0;
  72.    
  73.     const int playerOne = 237;
  74.     const int playerTwo = 264;
  75.    
  76.     int moveOne = moves[0][0] + moves[0][1] + moves[0][2];
  77.     int moveTwo = moves[1][0] + moves[1][1] + moves[1][2];
  78.     int moveThree = moves[2][0] + moves[2][1] + moves[2][2];
  79.     int moveFour = moves[0][0] + moves[1][0] + moves[2][0];
  80.     int moveFive = moves[0][1] + moves[1][1] + moves[2][1];
  81.     int moveSix = moves[0][2] + moves[1][2] + moves[2][2];
  82.     int moveSeven = moves[0][0] + moves[1][1] + moves[2][2];
  83.     int moveEight = moves[0][2] + moves[1][1] + moves[2][0];
  84.     int boardTotal = moveOne + moveTwo + moveThree;
  85.  
  86.     if(moveOne == playerOne || moveOne == playerTwo) {
  87.         switch(moveOne)
  88.         {
  89.             case playerOne:
  90.                 returnVal = 1;
  91.                 break;
  92.             case playerTwo:
  93.                 returnVal = 2;
  94.                 break;
  95.         }
  96.     }else if(moveTwo == playerOne || moveTwo == playerTwo) {
  97.         switch(moveTwo)
  98.         {
  99.             case playerOne:
  100.                 returnVal = 1;
  101.                 break;
  102.             case playerTwo:
  103.                 returnVal = 2;
  104.                 break;
  105.         }
  106.     }else if(moveThree == playerOne || moveThree == playerTwo) {
  107.         switch(moveThree)
  108.         {
  109.             case playerOne:
  110.                 returnVal = 1;
  111.                 break;
  112.             case playerTwo:
  113.                 returnVal = 2;
  114.                 break;
  115.         }
  116.     }else if(moveFour == playerOne || moveFour == playerTwo) {
  117.         switch(moveFour)
  118.         {
  119.             case playerOne:
  120.                 returnVal = 1;
  121.                 break;
  122.             case playerTwo:
  123.                 returnVal = 2;
  124.                 break;
  125.         }
  126.     }else if(moveFive == playerOne || moveFive == playerTwo) {
  127.         switch(moveFive)
  128.         {
  129.             case playerOne:
  130.                 returnVal = 1;
  131.                 break;
  132.             case playerTwo:
  133.                 returnVal = 2;
  134.                 break;
  135.         }
  136.     }else if(moveSix == playerOne || moveSix == playerTwo) {
  137.         switch(moveSix)
  138.         {
  139.             case playerOne:
  140.                 returnVal = 1;
  141.                 break;
  142.             case playerTwo:
  143.                 returnVal = 2;
  144.                 break;
  145.         }
  146.     }else if(moveSeven == playerOne || moveSeven == playerTwo) {
  147.         switch(moveSeven)
  148.         {
  149.             case playerOne:
  150.                 returnVal = 1;
  151.                 break;
  152.             case playerTwo:
  153.                 returnVal = 2;
  154.                 break;
  155.         }
  156.     }else if(moveEight == playerOne || moveEight == playerTwo) {
  157.         switch(moveEight)
  158.         {
  159.             case playerOne:
  160.                 returnVal = 1;
  161.                 break;
  162.             case playerTwo:
  163.                 returnVal = 2;
  164.                 break;
  165.         }
  166.     } else if(boardTotal == 756 || boardTotal == 747) {
  167.         returnVal = 3;
  168.     }
  169.     return returnVal;          
  170. }
  171.  
  172. void showWinner()
  173. {
  174.     if(winState(locArray) == 1)
  175.     {
  176.         system("color 0b");
  177.         cout<<"player 2 wins."<<endl;
  178.         cin.get();
  179.         clearArray();
  180.         playerTurn = true;
  181.         system("color 07");
  182.     }
  183.     if(winState(locArray) == 2)
  184.     {
  185.         system("color 0a");
  186.         cout<<"player 1 wins."<<endl;
  187.         cin.get();
  188.         clearArray();
  189.         playerTurn = true;
  190.         system("color 07");
  191.     }
  192.     if(winState(locArray) == 3)
  193.     {
  194.         system("color 0c");
  195.         cout<<"It's a draw!'"<<endl;
  196.         cin.get();
  197.         clearArray();
  198.         playerTurn = true;
  199.         system("color 07");
  200.     }
  201.     else
  202.     {
  203.         //No current winner (return 0)
  204.     }
  205. }
  206.  
  207. void getPlayerInput()
  208. {
  209.     int playerInput = 0;
  210.     while(true)
  211.     {
  212.     system("cls");
  213.     cout<<"############"<<endl;
  214.     cout<<"Player 1 = X"<<endl;
  215.     cout<<"Player 2 = O"<<endl;
  216.     cout<<"############"<<endl<<endl;
  217.     cout<<currentPlayer()<<" it is your turn."<<endl<<endl;
  218.     boardDisplay();
  219.     if(playerTurn == true)
  220.     {
  221.     cout<<"Please input where you would like to place your "<<valPlayer1<<": ";
  222.     }
  223.     else
  224.     {
  225.         cout<<"Please input where you would like to place your "<<valPlayer2<<": ";
  226.     }
  227.    
  228.     cin >> playerInput;
  229.    
  230.     if(playerTurn == true)
  231.         {
  232.             switch(playerInput)
  233.     {
  234.         case 1:
  235.             if(locArray[0][0] != '1')
  236.             {
  237.                 system("cls");
  238.                 cin.get();
  239.                 cout<<"Please input a valid location.";
  240.                 winState(locArray);
  241.             break;
  242.             }
  243.             locArray[0][0] = valPlayer1;
  244.             setPlayerBool(false);
  245.             winState(locArray);
  246.             break;
  247.         case 2:
  248.             if(locArray[0][1] != '2')
  249.             {
  250.                 system("cls");
  251.                 cin.get();
  252.                 cout<<"Please input a valid location.";
  253.                 winState(locArray);
  254.             break;
  255.             }
  256.             locArray[0][1] = valPlayer1;
  257.             setPlayerBool(false);
  258.             winState(locArray);
  259.             break;
  260.         case 3:
  261.             if(locArray[0][2] != '3')
  262.             {
  263.                 system("cls");
  264.                 cin.get();
  265.                 cout<<"Please input a valid location.";
  266.                 winState(locArray);
  267.             break;
  268.             }
  269.             locArray[0][2] = valPlayer1;
  270.             setPlayerBool(false);
  271.             winState(locArray);
  272.             break;
  273.         case 4:
  274.             if(locArray[1][0] != '4')
  275.             {
  276.                 system("cls");
  277.                 cin.get();
  278.                 cout<<"Please input a valid location.";
  279.                 winState(locArray);
  280.             break;
  281.             }
  282.             locArray[1][0] = valPlayer1;
  283.             setPlayerBool(false);
  284.             winState(locArray);
  285.             break;
  286.         case 5:
  287.             if(locArray[1][1] != '5')
  288.             {
  289.                 system("cls");
  290.                 cin.get();
  291.                 cout<<"Please input a valid location.";
  292.                 winState(locArray);
  293.             break;
  294.             }
  295.             locArray[1][1] = valPlayer1;
  296.             setPlayerBool(false);
  297.             winState(locArray);
  298.             break;
  299.         case 6:
  300.             if(locArray[1][2] != '6')
  301.             {
  302.                 system("cls");
  303.                 cin.get();
  304.                 cout<<"Please input a valid location.";
  305.                 winState(locArray);
  306.             break;
  307.             }
  308.             locArray[1][2] = valPlayer1;
  309.             setPlayerBool(false);
  310.             winState(locArray);
  311.             break;
  312.         case 7:
  313.             if(locArray[2][0] != '7')
  314.             {
  315.                 system("cls");
  316.                 cin.get();
  317.                 cout<<"Please input a valid location.";
  318.                 winState(locArray);
  319.             break;
  320.             }
  321.             locArray[2][0] = valPlayer1;
  322.             setPlayerBool(false);
  323.             winState(locArray);
  324.             break;
  325.         case 8:
  326.             if(locArray[2][1] != '8')
  327.             {
  328.                 system("cls");
  329.                 cin.get();
  330.                 cout<<"Please input a valid location.";
  331.                 winState(locArray);
  332.             break;
  333.             }
  334.             locArray[2][1] = valPlayer1;
  335.             setPlayerBool(false);
  336.             winState(locArray);
  337.             break;
  338.         case 9:
  339.             if(locArray[2][2] != '9')
  340.             {
  341.             system("cls");
  342.                 cin.get();
  343.                 cout<<"Please input a valid location.";
  344.                 winState(locArray);
  345.             break;
  346.             }
  347.             locArray[2][2] = valPlayer1;
  348.             setPlayerBool(false);
  349.             winState(locArray);
  350.             break;
  351.         }
  352.         }
  353.         else  //If it's player 2
  354.         {
  355.             switch(playerInput)
  356.     {
  357.         case 1:
  358.             if(locArray[0][0] != '1')
  359.             {
  360.                 system("cls");
  361.                 cin.get();
  362.                 cout<<"Please input a valid location.";
  363.                 winState(locArray);
  364.             break;
  365.             }
  366.             locArray[0][0] = valPlayer2;
  367.             setPlayerBool(true);
  368.             winState(locArray);
  369.             break;
  370.         case 2:
  371.             if(locArray[0][1] != '2')
  372.             {
  373.                 system("cls");
  374.                 cin.get();
  375.                 cout<<"Please input a valid location.";
  376.                 winState(locArray);
  377.             break;
  378.             }
  379.             locArray[0][1] = valPlayer2;
  380.             setPlayerBool(true);
  381.             winState(locArray);
  382.             break;
  383.         case 3:
  384.             if(locArray[0][2] != '3')
  385.             {
  386.                 system("cls");
  387.                 cin.get();
  388.                 cout<<"Please input a valid location.";
  389.                 winState(locArray);
  390.             break;
  391.             }
  392.             locArray[0][2] = valPlayer2;
  393.             setPlayerBool(true);
  394.             winState(locArray);
  395.             break;
  396.         case 4:
  397.             if(locArray[1][0] != '4')
  398.             {
  399.                 system("cls");
  400.                 cin.get();
  401.                 cout<<"Please input a valid location.";
  402.                 winState(locArray);
  403.             break;
  404.             }
  405.             locArray[1][0] = valPlayer2;
  406.             setPlayerBool(true);
  407.             winState(locArray);
  408.             break;
  409.         case 5:
  410.             if(locArray[1][1] != '5')
  411.             {
  412.                 system("cls");
  413.                 cin.get();
  414.                 cout<<"Please input a valid location.";
  415.                 winState(locArray);
  416.             break;
  417.             }
  418.             locArray[1][1] = valPlayer2;
  419.             setPlayerBool(true);
  420.             winState(locArray);
  421.             break;
  422.         case 6:
  423.             if(locArray[1][2] != '6')
  424.             {
  425.                 system("cls");
  426.                 cin.get();
  427.                 cout<<"Please input a valid location.";
  428.                 winState(locArray);
  429.             break;
  430.             }
  431.             locArray[1][2] = valPlayer2;
  432.             setPlayerBool(true);
  433.             winState(locArray);
  434.             break;
  435.         case 7:
  436.             if(locArray[2][0] != '7')
  437.             {
  438.                 system("cls");
  439.                 cin.get();
  440.                 cout<<"Please input a valid location.";
  441.                 break;
  442.             }
  443.             locArray[2][0] = valPlayer2;
  444.             setPlayerBool(true);
  445.             winState(locArray);
  446.             break;
  447.         case 8:
  448.             if(locArray[2][1] != '8')
  449.             {
  450.                 system("cls");
  451.                 cin.get();
  452.                 cout<<"Please input a valid location.";
  453.                 break;
  454.             }
  455.             locArray[2][1] = valPlayer2;
  456.             setPlayerBool(true);
  457.             winState(locArray);
  458.             break;
  459.         case 9:
  460.             if(locArray[2][2] != '9')
  461.             {
  462.                 system("cls");
  463.                 cin.get();
  464.                 cout<<"Please input a valid location.";
  465.                 break;
  466.             }
  467.             locArray[2][2] = valPlayer2;
  468.             setPlayerBool(true);
  469.             winState(locArray);
  470.             break;
  471.     }
  472. }
  473. cin.get();
  474. showWinner();
  475.     }
  476. }
  477.  
  478. int main()
  479. {
  480.     getPlayerInput();
  481. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement