#include <iostream> #include <vector> using namespace std; // Функция для отображения игрового поля void displayBoard(vector<vector<char>>& board) { cout << "-------------" << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << "| " << board[i][j] << " "; } cout << "|" << endl; } cout << "-------------" << endl; } // Функция для проверки победы bool checkWin(vector<vector<char>>& board, char player) { // Проверка по горизонталям и вертикалям for (int i = 0; i < 3; 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 makeBotMove(vector<vector<char>>& board) { // Проверяем, есть ли свободное место на поле bool hasEmptyCell = false; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (board[i][j] == ' ') { hasEmptyCell = true; break; } } if (hasEmptyCell) { break; } } // Если есть свободное место, выбираем случайную пустую клетку и делаем ход if (hasEmptyCell) { int row, col; do { row = rand() % 3; col = rand() % 3; } while (board[row][col] != ' '); board[row][col] = 'O'; } } int main() { // Создаем игровое поле 3x3 vector<vector<char>> board(3, vector<char>(3, ' ')); // Определяем игрока X и бота O char player = 'X'; // Цикл игры while (true) { // Отображаем игровое поле displayBoard(board); // Ход игрока cout << "Ход игрока " << player << endl; int row, col; cout << "Выберите строку (0-2): "; cin >> row; cout << "Выберите столбец (0-2): "; cin >> col; // Проверяем валидность хода игрока if (row < 0 || row > 2 || col < 0 || col > 2 || board[row][col] != ' ') { cout << "Неверный ход. Повторите попытку." << endl; continue; } // Делаем ход игрока board[row][col] = player; // Проверяем победу игрока if (checkWin(board, player)) { cout << "Победил игрок " << player << "!" << endl; break; } // Проверяем ничью bool isTie = true; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (board[i][j] == ' ') { isTie = false; break; } } if (!isTie) { break; } } if (isTie) { cout << "Ничья!" << endl; break; } // Ход бота cout << "Ход бота..." << endl; makeBotMove(board); // Проверяем победу бота if (checkWin(board, 'O')) { cout << "Победил бот!" << endl; break; } } return 0; }