Facebook
From A1, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 109
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void printBoard(const vector<vector<char>>& board) {
  7.     cout << "     0   1   2\n";
  8.     cout << "   -------------\n";
  9.     for (int i = 0; i < 3; i++) {
  10.         cout << i << "  | " << board[i][0] << " | " << board[i][1] << " | " << board[i][2] << " |" << endl;
  11.         cout << "   -------------\n";
  12.     }
  13. }
  14.  
  15. bool isWin(const vector<vector<char>>& board, char player) {
  16.     for (int i = 0; i < 3; i++) {
  17.         if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return true;
  18.         if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return true;
  19.     }
  20.     if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return true;
  21.     if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return true;
  22.     return false;
  23. }
  24.  
  25. bool isBoardFull(const vector<vector<char>>& board) {
  26.     for (const auto& row : board) {
  27.         for (char cell : row) {
  28.             if (cell == ' ') return false;
  29.         }
  30.     }
  31.     return true;
  32. }
  33.  
  34. bool placeMarker(int row, int col, vector<vector<char>>& board, char marker) {
  35.     if (board[row][col] == ' ') {
  36.         board[row][col] = marker;
  37.         return true;
  38.     }
  39.     return false;
  40. }
  41.  
  42. int main() {
  43.     vector<vector<char>> board(3, vector<char>(3, ' '));
  44.     char turn = 'X';
  45.     int row, col;
  46.     bool gameEnded = false;
  47.  
  48.     while (!gameEnded) {
  49.         printBoard(board);
  50.         cout << "Player " << turn << ", enter row and column to place your marker: ";
  51.         cin >> row >> col;
  52.  
  53.         if (row < 0 || row >= 3 || col < 0 || col >= 3) {
  54.             cout << "Invalid position! Try again.\n";
  55.             continue;
  56.         }
  57.  
  58.         if (!placeMarker(row, col, board, turn)) {
  59.             cout << "This position is already occupied! Try again.\n";
  60.             continue;
  61.         }
  62.  
  63.         if (isWin(board, turn)) {
  64.             printBoard(board);
  65.             cout << "Player " << turn << " wins!\n";
  66.             gameEnded = true;
  67.         } else if (isBoardFull(board)) {
  68.             printBoard(board);
  69.             cout << "It's a draw!\n";
  70.             gameEnded = true;
  71.         } else {
  72.             turn = (turn == 'X') ? 'O' : 'X';
  73.         }
  74.     }
  75.  
  76.     return 0;
  77. }