Advertisement
Rapptz

Untitled

May 6th, 2012
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.50 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. #include <algorithm>
  5. #include <ctime>
  6. using namespace std;
  7. string board[9] = { " ", " ", " ", " ", " ", " ", " ", " ", " " };
  8.  
  9. void showBoard() {
  10.     cout << "  " << " | " << "  " << " | " << endl;
  11.     cout << " " << board[6] << " | " << board[7] << "  | " << board[8] << endl;
  12.     cout << "  " << " | " << "  " << " | " << endl;
  13.     cout << "-------------" << endl;
  14.     cout << "  " << " | " << "  " << " | " << endl;
  15.     cout << " " << board[3] << " | " << board[4] << "  | " << board[5] << endl;
  16.     cout << "  " << " | " << "  " << " | " << endl;
  17.     cout << "-------------" << endl;
  18.     cout << "  " << " | " << "  " << " | " << endl;
  19.     cout << " " << board[0] << " | " << board[1] << "  | " << board[2] << endl;
  20.     cout << "  " << " | " << "  " << " | " << endl;
  21.     cout << endl;
  22. }
  23. bool spaceFree() {
  24.     for(int i = 0; i<9; i++) {
  25.         if(board[i] == " ")
  26.             return true;
  27.     }
  28.     return false;
  29. }
  30. bool winner(string s) {
  31.     if(board[6] == s && board[7] == s && board[8] == s)
  32.         return true;
  33.     else if(board[3] == s && board[4] == s && board[5] == s)
  34.         return true;
  35.     else if(board[0] == s && board[1] == s && board[2] == s)
  36.         return true;
  37.     else if(board[6] == s && board[3] == s && board[0] == s)
  38.         return true;
  39.     else if(board[7] == s && board[4] == s && board[1] == s)
  40.         return true;
  41.     else if(board[8] == s && board[5] == s && board[2] == s)
  42.         return true;
  43.     else if(board[6] == s && board[4] == s && board[2] == s)
  44.         return true;
  45.     else if(board[8] == s && board[4] == s && board[0] == s)
  46.         return true;
  47.     else
  48.         return false;
  49. }
  50. void computer(string c) {
  51.     string p;
  52.     int count = 0;
  53.     if(c == "X")
  54.         p = "O";
  55.     else
  56.         p = "X";
  57.  
  58.     //check for computer win
  59.     if(((board[8] == c && board[4] == c) || (board[6] == c && board[3] == c) || (board[1] == c && board[2] == c)) && board[0] == " ")
  60.             board[0] = c;
  61.     else if(((board[0] == c && board[4] == c) || (board[6] == c && board[7] == c) || (board[5] == c && board[2] == c)) && board[8] == " ")
  62.             board[8] = c;
  63.     else if(((board[8] == c && board[7] == c) || (board[0] == c && board[3] == c) || (board[4] == c && board[2] == c)) && board[6] == " ")
  64.             board[6] = c;
  65.     else if(((board[8] == c && board[0] == c) || (board[6] == c && board[2] == c) ||
  66.         (board[1] == c && board[7] == c) || (board[5] == c && board[3] == c))&&board[4] == " ")
  67.             board[4] = c;
  68.     else if(((board[6] == c && board[4] == c) || (board[0] == c && board[1] == c) || (board[8] == c && board[5] == c))&&board[2] == " ")
  69.             board[2] = c;
  70.     else if(((board[6] == c && board[8] == c) || (board[1] == c && board[4] == c))&&board[7] == " ")
  71.             board[7] = c;
  72.     else if(((board[8] == c && board[2] == c) || (board[3] == c && board[4] == c))&&board[5] == " ")
  73.             board[5] = c;
  74.     else if(((board[6] == c && board[0] == c) || (board[5] == c && board[4] == c))&&board[3] == " ")
  75.             board[3] = c;
  76.     else if(((board[0] == c && board[2] == c) || (board[7] == c && board[4] == c))&&board[1] == " ")
  77.             board[1] = c;
  78.     //block player wins
  79.     else if(((board[8] == p && board[4] == p) || (board[6] == p && board[3] == p) || (board[1] == p && board[2] == p))&&board[0] == " ")
  80.             board[0] = c;
  81.     else if(((board[0] == p && board[4] == p) || (board[6] == p && board[7] == p) || (board[5] == p && board[2] == p))&&board[8] == " ")
  82.             board[8] = c;
  83.     else if(((board[8] == p && board[7] == p) || (board[0] == p && board[3] == p) || (board[4] == p && board[2] == p))&&board[6] == " ")
  84.             board[6] = c;
  85.     else if(((board[8] == p && board[0] == p) || (board[6] == p && board[2] == p) ||
  86.         (board[1] == p && board[7] == p) || (board[5] == p && board[3] == p))&&board[4] == " ")
  87.             board[4] = c;
  88.     else if(((board[6] == p && board[4] == p) || (board[0] == p && board[1] == p) || (board[8] == p && board[5] == p))&&board[2] == " ")
  89.             board[2] = c;
  90.     else if(((board[6] == p && board[8] == p) || (board[1] == p && board[4] == p))&&board[7] == " ")
  91.             board[7] = c;
  92.     else if(((board[8] == p && board[2] == p) || (board[3] == p && board[4] == p))&&board[5] == " ")
  93.             board[5] = c;
  94.     else if(((board[6] == p && board[0] == p) || (board[5] == p && board[4] == p))&&board[3] == " ")
  95.             board[3] = c;
  96.     else if(((board[0] == p && board[2] == p) || (board[7] == p && board[4] == p))&&board[1] == " ")
  97.             board[1] = c;
  98.     else {
  99.         do {
  100.             srand(time(0));
  101.             int random = rand()%9;
  102.             if(board[random] == " ") {
  103.                 board[random] = c;
  104.                 count++;
  105.                 break;
  106.             }
  107.         }
  108.         while(count<=0);
  109.         count = 0;
  110.     }
  111. }
  112. int main() {
  113.     cout << "Would you like to be X or O?: ";
  114.     string userInput;
  115.     string computerInput;
  116.     getline(cin,userInput);
  117.     transform(userInput.begin(), userInput.end(), userInput.begin(), ::toupper);
  118.  
  119.     while(!(userInput == "X" || userInput == "O")) {
  120.         cout << "Please enter a valid input: ";
  121.         getline(cin,userInput);
  122.         transform(userInput.begin(), userInput.end(), userInput.begin(), ::toupper);
  123.     }  
  124.     if(userInput == "X")
  125.         computerInput = "O";
  126.     else
  127.         computerInput = "X";
  128.  
  129.     showBoard();
  130.     do {
  131.         int input = 0;
  132.         while(input > 9 || input < 1) {
  133.             attempt:
  134.                 cout << "Where would you like to move? Numberpad for indication: ";
  135.                 cin >> input;
  136.                 if(board[input-1] == " ")
  137.                     board[input-1] = userInput;
  138.                 else
  139.                     goto attempt;
  140.         }
  141.         if(spaceFree())
  142.             computer(computerInput);
  143.         showBoard();
  144.         if(winner(userInput)) {
  145.             cout << "\nPlayer wins!\n";
  146.             break;
  147.         }
  148.         else if(winner(computerInput)) {
  149.             cout << "\nComputer wins!\n";
  150.             break;
  151.         }
  152.         else if(spaceFree() == false) {
  153.             cout << "\nIt's a tie!\n";
  154.             break;
  155.         }
  156.     }
  157.     while(spaceFree() == true);
  158.     cin.get();
  159.     cin.get();
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement