#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void drawBoard(char *spaces);
void playerMove(char *spaces, char player, char computer);
int computerMove(char *spaces, char player, char computer);
int CheckWinner(char *spaces, char player, char computer, bool running);
bool CheckTie(char *spaces, char player, char computer, bool running);
int main() {
char spaces[9] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '};
char player = 'X';
char computer = 'O';
bool running = true;
drawBoard(spaces);
while(running){
playerMove(spaces, player, computer);
drawBoard(spaces);
if(CheckWinner(spaces, player, computer, running)){
running = false;
break;
}
if(CheckTie(spaces, player, computer, running) == true){
exit(0);
} else {
//pass
}
computerMove(spaces, player, computer);
drawBoard(spaces);
}
}
void drawBoard(char *spaces){
cout << "" << endl;
cout << " | | " << endl;
cout << " " << spaces[0] << " |" << spaces[1] << " |" << spaces[2] << endl;
cout << " | | " << endl;
cout << "____|____|_____" << endl;
cout << " | | " << endl;
cout << " " << spaces[3] << " |" << spaces[4] << " |" << spaces[5] << endl;
cout << " | | " << endl;
cout << "____|____|_____" << endl;
cout << " | | " << endl;
cout << " " << spaces[6] << " |" << spaces[7] << " |" << spaces[8] << endl;
cout << " | | " << endl;
cout << " | | " << endl;
}
void playerMove(char *spaces, char player, char computer){
int where;
cout << "Where do you want to move? (1-9)" << endl;
cin >> where;
if(where == 1 && spaces[0] != computer){
spaces[0] = player;
}else if(where == 1 && spaces[0] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 2 && spaces[1] != computer){
spaces[1] = player;
} else if(where == 2 && spaces[1] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 3 && spaces[2] != computer){
spaces[2] = player;
} else if(where == 3 && spaces[2] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 4 && spaces[3] != computer){
spaces[1] = player;
} else if(where == 4 && spaces[3] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 5 && spaces[4] != computer){
spaces[1] = player;
} else if(where == 5 && spaces[4] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 6 && spaces[5] != computer){
spaces[1] = player;
} else if(where == 6 && spaces[5] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 7 && spaces[6] != computer){
spaces[1] = player;
} else if(where == 7 && spaces[6] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 8 && spaces[7] != computer){
spaces[1] = player;
} else if(where == 8 && spaces[7] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else if(where == 9 && spaces[8] != computer){
spaces[1] = player;
} else if(where == 9 && spaces[8] == computer){
cout << "The computer has already taken that place. Move again." << endl;
cin >> where;
} else {
cout << "Uh.. Let's try that again." << endl;
cin >> where;
}
}
int computerMove(char *spaces, char player, char computer){
srand(time(NULL));
int computer_move = rand() % 9 + 1;
if(computer_move == 1 && spaces[0] != player){
spaces[0] = computer;
} else if(computer_move == 1 && spaces[0] == player){
return 0;
} else if(computer_move == 2 && spaces[1] != player){
spaces[1] == computer;
} else if(computer_move == 2 && spaces[1] == player){
return 0;
} else if(computer_move == 3 && spaces[1] != player){
spaces[2] == computer;
} else if(computer_move == 3 && spaces[1] == player){
return 0;
} else if(computer_move == 4 && spaces[1] != player){
spaces[3] == computer;
} else if(computer_move == 4 && spaces[1] == player){
return 0;
} else if(computer_move == 5 && spaces[1] != player){
spaces[4] == computer;
} else if(computer_move == 5 && spaces[1] == player){
return 0;
} else if(computer_move == 6 && spaces[1] != player){
spaces[5] == computer;
} else if(computer_move == 6 && spaces[1] == player){
return 0;
} else if(computer_move == 7 && spaces[1] != player){
spaces[6] == computer;
} else if(computer_move == 7 && spaces[1] == player){
return 0;
} else if(computer_move == 8 && spaces[1] != player){
spaces[7] == computer;
} else if(computer_move == 8 && spaces[1] == player){
return 0;
} else if(computer_move == 9 && spaces[1] != player){
spaces[8] == computer;
} else if(computer_move == 9 && spaces[1] == player){
return 0;
}
}
int CheckWinner(char *spaces, char player, char computer, bool running){
for(int i=0; i<sizeof(spaces)/sizeof(spaces[0]); i++){
if(spaces[i] == player && spaces[i] == spaces[i+1] && spaces[i+1] == spaces[i+2]){
cout << "You Won!" << endl;
running = false;
} else if(spaces[i] == computer && spaces[i] == spaces[i+1] && spaces[i+1] == spaces[i+2]){
cout << "You Lost" << endl;
exit(0);
} else {
return 0;
}
}
if(spaces[0] == player && spaces[0] == spaces[4] && spaces[4] == spaces[8]){
cout << "You Won!" << endl;
running = false;
} else if(spaces[0] == computer && spaces[0] == spaces[4] && spaces[4] == spaces[8]){
cout << "You Lost :/" << endl;
exit(0);
} else {
return 0;
}
if(spaces[2] == player && spaces[2] == spaces[4] && spaces[4] == spaces[6]){
cout << "You Won!" << endl;
running = false;
} else if(spaces[2] == computer && spaces[2] == spaces[4] && spaces[4] == spaces[6]){
cout << "You Lost!" << endl;
exit(0);
} else {
return 0;
}
if(spaces[0] == player && spaces[0] == spaces[3] && spaces[3] == spaces[6] || spaces[2] == player && spaces[2] == spaces[5] && spaces[5] == spaces[8]){
cout << "You Won!" << endl;
running = false;
} else if(spaces[0] == computer && spaces[0] == spaces[3] && spaces[3] == spaces[6] || spaces[2] == computer && spaces[2] == spaces[5] && spaces[5] == spaces[8]){
cout << "You Lost" << endl;
exit(0);
} else {
return 0;
}
}
bool CheckTie(char *spaces, char player, char computer, bool running){
for(int i=0; i<9; i++){
if(spaces[i] == ' '){
return false;
}
}
cout << "IT'S A TIE" << endl;
return true;
}