问题标题: 井字棋小游戏1.0

0
0
已解决
朱宥宇
朱宥宇
高级光能
高级光能
#include <iostream>
using namespace std;

char board[3][3] = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
char currentPlayer = 'X';

void drawBoard() {
    cout << "\n  1 2 3\n";
    for (int i = 0; i < 3; i++) {
        cout << i+1 << " ";
        for (int j = 0; j < 3; j++) {
            cout << board[i][j];
            if (j < 2) cout << "|";
        }
        cout << endl;
        if (i < 2) cout << "  -+-+-\n";
    }
}

bool checkWin() {
    // Check rows
    for (int i = 0; i < 3; i++)
        if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2])
            return true;

    // Check columns
    for (int j = 0; j < 3; j++)
        if (board[0][j] != ' ' && board[0][j] == board[1][j] && board[1][j] == board[2][j])
            return true;

    // Check diagonals
    if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2])
        return true;
    if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0])
        return true;

    return false;
}

bool checkDraw() {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
            if (board[i][j] == ' ')
                return false;
    return true;
}

void switchPlayer() {
    currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}

bool makeMove(int row, int col) {
    if (row < 1 || row > 3 || col < 1 || col > 3) return false;
    if (board[row-1][col-1] != ' ') return false;

    board[row-1][col-1] = currentPlayer;
    return true;
}

int main() {
    int row, col;

    while (true) {
        drawBoard();
        cout << "玩家 " << currentPlayer << " 的回合,输入行列(如:2 3):";
        cin >> row >> col;

        if (!makeMove(row, col)) {
            cout << "无效的落子位置,请重新输入!\n";
            cin.clear();
            cin.ignore(10000, '\n');
            continue;
        }

        if (checkWin()) {
            drawBoard();
            cout << "玩家 " << currentPlayer << " 获胜!\n";
            break;
        }

        if (checkDraw()) {
            drawBoard();
            cout << "平局!\n";
            break;
        }

        switchPlayer();
    }
    return 0;
}

可以转载!!!


0
0
0
我要回答