Facebook
From Vvv, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 119
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. void printBoard(const vector<vector<char>>& board) {
  8.     system&#40;"cls"&#41;;  // Clear the console
  9.     cout << "     0   1   2\n";
  10.     cout << "   -------------\n";
  11.     for (int i = 0; i < 3; i++) {
  12.         cout << i << "  | ";
  13.         for (int j = 0; j < 3; j++) {
  14.             cout << board[i][j] << " | ";
  15.         }
  16.         cout << "\n   -------------\n";
  17.     }
  18. }
  19.  
  20. bool isWin(const vector<vector<char>>& board, char player) {
  21.     for (int i = 0; i < 3; i++) {
  22.         if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return true;
  23.         if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return true;
  24.     }
  25.     if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return true;
  26.     if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return true;
  27.     return false;
  28. }
  29.  
  30. bool isBoardFull(const vector<vector<char>>& board) {
  31.     for (const auto& row : board) {
  32.         for (char cell : row) {
  33.             if (cell == ' ') return false;
  34.         }
  35.     }
  36.     return true;
  37. }
  38.  
  39. int main() {
  40.     vector<vector<char>> board(3, vector<char>(3, ' '));
  41.     char turn = 'X';
  42.     int x = 0, y = 0;
  43.     bool gameEnded = false;
  44.  
  45.     while (!gameEnded) {
  46.         printBoard(board);
  47.         cout << "Player " << turn << ", use arrow keys to move, space to place. Current position: (" << y << ", " << x << ")" << endl;
  48.         int ch = _getch(); // Use _getch() to get keypress
  49.  
  50.         switch (ch) {
  51.             case 0:
  52.             case 224: // Handle arrow keys
  53.                 switch (_getch()) { // Read the second character of arrow key sequence
  54.                     case 72: y = max(0, y - 1); break; // Up
  55.                     case 80: y = min(2, y + 1); break; // Down
  56.                     case 75: x = max(0, x - 1); break; // Left
  57.                     case 77: x = min(2, x + 1); break; // Right
  58.                 }
  59.                 break;
  60.             case ' ': // Place a mark on the board with space
  61.                 if (board[y][x] == ' ') {
  62.                     board[y][x] = turn;
  63.                     if (isWin(board, turn)) {
  64.                         printBoard(board);
  65.                         cout << "Player " << turn << " wins!" << endl;
  66.                         gameEnded = true;
  67.                     } else if (isBoardFull(board)) {
  68.                         printBoard(board);
  69.                         cout << "It's a draw!" << endl;
  70.                         gameEnded = true;
  71.                     }
  72.                     turn = (turn == 'X') ? 'O' : 'X';
  73.                 }
  74.                 break;
  75.         }
  76.     }
  77.  
  78.     return 0;
  79. }