Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <algorithm>
- #include <ctime>
- using namespace std;
- string board[9] = { " ", " ", " ", " ", " ", " ", " ", " ", " " };
- void showBoard() {
- cout << " " << " | " << " " << " | " << endl;
- cout << " " << board[6] << " | " << board[7] << " | " << board[8] << endl;
- cout << " " << " | " << " " << " | " << endl;
- cout << "-------------" << endl;
- cout << " " << " | " << " " << " | " << endl;
- cout << " " << board[3] << " | " << board[4] << " | " << board[5] << endl;
- cout << " " << " | " << " " << " | " << endl;
- cout << "-------------" << endl;
- cout << " " << " | " << " " << " | " << endl;
- cout << " " << board[0] << " | " << board[1] << " | " << board[2] << endl;
- cout << " " << " | " << " " << " | " << endl;
- cout << endl;
- }
- bool spaceFree() {
- for(int i = 0; i<9; i++) {
- if(board[i] == " ")
- return true;
- }
- return false;
- }
- bool winner(string s) {
- if(board[6] == s && board[7] == s && board[8] == s)
- return true;
- else if(board[3] == s && board[4] == s && board[5] == s)
- return true;
- else if(board[0] == s && board[1] == s && board[2] == s)
- return true;
- else if(board[6] == s && board[3] == s && board[0] == s)
- return true;
- else if(board[7] == s && board[4] == s && board[1] == s)
- return true;
- else if(board[8] == s && board[5] == s && board[2] == s)
- return true;
- else if(board[6] == s && board[4] == s && board[2] == s)
- return true;
- else if(board[8] == s && board[4] == s && board[0] == s)
- return true;
- else
- return false;
- }
- void computer(string c) {
- string p;
- int count = 0;
- if(c == "X")
- p = "O";
- else
- p = "X";
- //check for computer win
- if(((board[8] == c && board[4] == c) || (board[6] == c && board[3] == c) || (board[1] == c && board[2] == c)) && board[0] == " ")
- board[0] = c;
- else if(((board[0] == c && board[4] == c) || (board[6] == c && board[7] == c) || (board[5] == c && board[2] == c)) && board[8] == " ")
- board[8] = c;
- else if(((board[8] == c && board[7] == c) || (board[0] == c && board[3] == c) || (board[4] == c && board[2] == c)) && board[6] == " ")
- board[6] = c;
- else if(((board[8] == c && board[0] == c) || (board[6] == c && board[2] == c) ||
- (board[1] == c && board[7] == c) || (board[5] == c && board[3] == c))&&board[4] == " ")
- board[4] = c;
- else if(((board[6] == c && board[4] == c) || (board[0] == c && board[1] == c) || (board[8] == c && board[5] == c))&&board[2] == " ")
- board[2] = c;
- else if(((board[6] == c && board[8] == c) || (board[1] == c && board[4] == c))&&board[7] == " ")
- board[7] = c;
- else if(((board[8] == c && board[2] == c) || (board[3] == c && board[4] == c))&&board[5] == " ")
- board[5] = c;
- else if(((board[6] == c && board[0] == c) || (board[5] == c && board[4] == c))&&board[3] == " ")
- board[3] = c;
- else if(((board[0] == c && board[2] == c) || (board[7] == c && board[4] == c))&&board[1] == " ")
- board[1] = c;
- //block player wins
- else if(((board[8] == p && board[4] == p) || (board[6] == p && board[3] == p) || (board[1] == p && board[2] == p))&&board[0] == " ")
- board[0] = c;
- else if(((board[0] == p && board[4] == p) || (board[6] == p && board[7] == p) || (board[5] == p && board[2] == p))&&board[8] == " ")
- board[8] = c;
- else if(((board[8] == p && board[7] == p) || (board[0] == p && board[3] == p) || (board[4] == p && board[2] == p))&&board[6] == " ")
- board[6] = c;
- else if(((board[8] == p && board[0] == p) || (board[6] == p && board[2] == p) ||
- (board[1] == p && board[7] == p) || (board[5] == p && board[3] == p))&&board[4] == " ")
- board[4] = c;
- else if(((board[6] == p && board[4] == p) || (board[0] == p && board[1] == p) || (board[8] == p && board[5] == p))&&board[2] == " ")
- board[2] = c;
- else if(((board[6] == p && board[8] == p) || (board[1] == p && board[4] == p))&&board[7] == " ")
- board[7] = c;
- else if(((board[8] == p && board[2] == p) || (board[3] == p && board[4] == p))&&board[5] == " ")
- board[5] = c;
- else if(((board[6] == p && board[0] == p) || (board[5] == p && board[4] == p))&&board[3] == " ")
- board[3] = c;
- else if(((board[0] == p && board[2] == p) || (board[7] == p && board[4] == p))&&board[1] == " ")
- board[1] = c;
- else {
- do {
- srand(time(0));
- int random = rand()%9;
- if(board[random] == " ") {
- board[random] = c;
- count++;
- break;
- }
- }
- while(count<=0);
- count = 0;
- }
- }
- int main() {
- cout << "Would you like to be X or O?: ";
- string userInput;
- string computerInput;
- getline(cin,userInput);
- transform(userInput.begin(), userInput.end(), userInput.begin(), ::toupper);
- while(!(userInput == "X" || userInput == "O")) {
- cout << "Please enter a valid input: ";
- getline(cin,userInput);
- transform(userInput.begin(), userInput.end(), userInput.begin(), ::toupper);
- }
- if(userInput == "X")
- computerInput = "O";
- else
- computerInput = "X";
- showBoard();
- do {
- int input = 0;
- while(input > 9 || input < 1) {
- attempt:
- cout << "Where would you like to move? Numberpad for indication: ";
- cin >> input;
- if(board[input-1] == " ")
- board[input-1] = userInput;
- else
- goto attempt;
- }
- if(spaceFree())
- computer(computerInput);
- showBoard();
- if(winner(userInput)) {
- cout << "\nPlayer wins!\n";
- break;
- }
- else if(winner(computerInput)) {
- cout << "\nComputer wins!\n";
- break;
- }
- else if(spaceFree() == false) {
- cout << "\nIt's a tie!\n";
- break;
- }
- }
- while(spaceFree() == true);
- cin.get();
- cin.get();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement