#include #include using namespace std; const int ROWS = 3; const int COLS = 3; void print_board(vector> xo_board) { for(int i = 0; i < ROWS; i++) { for(int j = 0; j < COLS; j++) { cout << xo_board[i][j] << " "; } cout << endl; } } bool valid_move(int pi, int pj, vector> xo_board) { pi--; pj--; if(pi >= 0 and pi < ROWS and pj >= 0 and pj < COLS and xo_board[pi][pj] == '.') { return true; } return false; } void set_board(int pi, int pj, char current_player, vector> & xo_board) { xo_board[pi - 1][pj - 1] = current_player; } bool has_anyone_won(vector> xo_board, char current_player) { if(xo_board[0][0] == current_player and xo_board[1][1] == current_player and xo_board[2][2] == current_player) { return true; } if(xo_board[0][2] == current_player and xo_board[1][1] == current_player and xo_board[2][0] == current_player) { return true; } if(xo_board[0][0] == current_player and xo_board[0][1] == current_player and xo_board[0][2] == current_player) { return true; } if(xo_board[1][0] == current_player and xo_board[1][1] == current_player and xo_board[1][2] == current_player) { return true; } if(xo_board[2][0] == current_player and xo_board[2][1] == current_player and xo_board[2][2] == current_player) { return true; } if(xo_board[0][0] == current_player and xo_board[1][0] == current_player and xo_board[2][0] == current_player) { return true; } if(xo_board[0][1] == current_player and xo_board[1][1] == current_player and xo_board[2][1] == current_player) { return true; } return false; } bool is_draw(vector> xo_board) { for(int i = 0; i < ROWS; i++) { for(int j = 0; j < COLS; j++) { if(xo_board[i][j] == '.') { return false; } } } return true; } int main() { vector > xo_board(ROWS, vector(COLS, '.')); char current_player = 'X'; bool game_over = false; while(!game_over) { print_board(xo_board); cout << current_player << "'s turn!" << endl; cout << "Where do you want to place " << current_player <<"?" << endl; int pi, pj; cin >> pi >> pj; while(!valid_move(pi, pj, xo_board)) { cout << "Not a valid move! Please play again!" << endl; cin >> pi >> pj; } set_board(pi, pj, current_player, xo_board); if(has_anyone_won(xo_board, current_player)) { print_board(xo_board); cout << current_player << " has won!" << endl << "CONGRATULATIONS!!!" << endl; break; } if(is_draw(xo_board)) { cout << "It's a draw! Try again!" << endl; break; } if(current_player == 'X') { current_player = 'O'; } else { current_player = 'X'; } } return 0; }