#include <iostream> #include <vector> using namespace std; // Размер игрового поля const int ROWS = 3; const int COLS = 3; // Функция для вывода игрового поля void drawBoard(const vector<vector<char>>& board) { for (int i = 0; i < ROWS; ++i) { for (int j = 0; j < COLS; ++j) { cout << board[i][j] << " "; } cout << endl; } } // Функция для проверки выигрышной комбинации bool checkWin(const vector<vector<char>>& board, char player) { // Проверка строк и столбцов for (int i = 0; i < ROWS; ++i) { if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return true; if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return true; } // Проверка диагоналей if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return true; if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return true; return false; } // Функция для выполнения хода игрока void playerMove(vector<vector<char>>& board, char player) { int row, col; do { cout << "Игрок " << player << ", введите координаты (строка и столбец): "; cin >> row >> col; } while (row < 0 || row >= ROWS || col < 0 || col >= COLS || board[row][col] != ' '); board[row][col] = player; } // Основная функция int main() { vector<vector<char>> board(ROWS, vector<char>(COLS, ' ')); // Создание пустого игрового поля char currentPlayer = 'X'; // Начинает игрок X drawBoard(board); // Вывод начального игрового поля // Игровой цикл while (true) { playerMove(board, currentPlayer); // Выполнение хода текущего игрока drawBoard(board); // Вывод обновленного игрового поля // Проверка на выигрыш или ничью if (checkWin(board, currentPlayer)) { cout << "Игрок " << currentPlayer << " выиграл!" << endl; break; } else if (board[0][0] != ' ' && board[0][1] != ' ' && board[0][2] != ' ' && board[1][0] != ' ' && board[1][1] != ' ' && board[1][2] != ' ' && board[2][0] != ' ' && board[2][1] != ' ' && board[2][2] != ' ') { cout << "Ничья!" << endl; break; } // Смена игрока currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; } return 0; }