#include <iostream>
#include <ctime>
using namespace std;
char field[3][3] = { {'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'} };
bool makeMove(int choice, char player) {
int row = (choice - 1) / 3;
int col = (choice - 1) % 3;
if (field[row][col] != 'X' && field[row][col] != 'O') {
field[row][col] = player;
return true;
} else {
return false;
}
}
void pri() {
for (int i = 0; i < 3; i++) {
cout << " " << field[i][0] << " | " << field[i][1] << " | " << field[i][2] << endl;
if (i < 2) cout << "---|---|---" << endl;
}
cout<<"\n"<<endl;
cout<<"\n";
}
char checkWin() {
for (int i = 0; i < 3; i++) {
if (field[i][0] == field[i][1] && field[i][1] == field[i][2] && field[i][0] != ' ')
return field[i][0];
if (field[0][i] == field[1][i] && field[1][i] == field[2][i] && field[0][i] != ' ')
return field[0][i];
}
if (field[0][0] == field[1][1] && field[1][1] == field[2][2] && field[0][0] != ' ')
return field[0][0];
if (field[0][2] == field[1][1] && field[1][1] == field[2][0] && field[0][2] != ' ')
return field[0][2];
return ' ';
}
int main() {
setlocale(0,"");
srand(time(0));
int menuChoice;
cout << "[ 1 ] Два игрока" << endl;
cout << "[ 2 ] Игрок vs Бот" << endl;
cout << "[ 3 ] Выйти" << endl;
cout << "> "; cin >> menuChoice;
if (menuChoice == 1) {
char player = 'X';
int move;
for (int turn = 0; turn < 9; turn++) {
pri();
cout << "Игрок " << player << ", выбери клетку (1-9): ";
cin >> move;
if (!makeMove(move, player)) {
cout << "Эта клетка занята! Попробуй другую.\n";
turn--;
continue;
}
char winner = checkWin();
if (winner != ' ') {
pri();
cout << "Игрок " << winner << " победил!\n";
return 0;
}
player = (player == 'X') ? 'O' : 'X';
}
pri();
cout << "Ничья!\n";
}
else if (menuChoice == 2) {
char player = 'X';
int move;
for (int turn = 0; turn < 9; turn++) {
pri();
if (player == 'X') {
cout << "Игрок, выбери клетку (1-9): ";
cin >> move;
if (!makeMove(move, player)) {
cout << "Эта клетка занята! Попробуй другую.\n";
turn--;
continue;
}
} else {
do {
move = rand() % 9 + 1;
} while (!makeMove(move, player));
}
char winner = checkWin();
if (winner != ' ') {
pri();
if (winner == 'X')
cout << "Игрок победил!\n";
else
cout << "Бот победил!\n";
return 0;
}
player = (player == 'X') ? 'O' : 'X';
}
pri();
cout << "Ничья!\n";
} else {
cout << "Выход из игры.\n";
}
return 0;
}