Загрузка данных


#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;
}