You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java二维数组实现井字棋:如何添加胜负判断功能?

Java井字棋胜负判断实现方案

井字棋的获胜逻辑很明确:同一行、同一列、或两条对角线的三个格子完全相同(且不能是空位)。以下是直接可用的Java代码实现,假设你的棋盘用char[][] board表示,其中'X'、'O'代表双方棋子,' '(空格)代表空位。

核心判断方法

public char checkWinner(char[][] board) {
    // 检查行
    for (int i = 0; i < 3; i++) {
        if (board[i][0] != ' ' && board[i][0] == board[i][1] && board[i][1] == board[i][2]) {
            return board[i][0];
        }
    }

    // 检查列
    for (int i = 0; i < 3; i++) {
        if (board[0][i] != ' ' && board[0][i] == board[1][i] && board[1][i] == board[2][i]) {
            return board[0][i];
        }
    }

    // 检查对角线
    if (board[0][0] != ' ' && board[0][0] == board[1][1] && board[1][1] == board[2][2]) {
        return board[0][0];
    }
    if (board[0][2] != ' ' && board[0][2] == board[1][1] && board[1][1] == board[2][0]) {
        return board[0][2];
    }

    // 无胜者,返回空字符(可根据需求调整返回值,比如用'N'表示无胜者)
    return ' ';
}

代码说明

  • 行检查:遍历每一行,判断该行三个元素是否一致且不为空,满足则返回对应棋子字符。
  • 列检查:遍历每一列,逻辑和行检查一致。
  • 对角线检查:直接判断两条对角线的三个元素是否符合获胜条件。
  • 返回值:有胜者返回'X'或'O',无胜者返回空格(可自行修改为其他标识,比如null或自定义枚举值)。

扩展:判断平局

如果需要判断游戏是否平局(棋盘填满且无胜者),可以添加如下方法:

public boolean isDraw(char[][] board) {
    // 已有胜者则不是平局
    if (checkWinner(board) != ' ') {
        return false;
    }
    // 存在空位则不是平局
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (board[i][j] == ' ') {
                return false;
            }
        }
    }
    // 无胜者且无空位,判定为平局
    return true;
}

落子完成后,调用checkWinner方法获取结果,根据返回值判断是否结束游戏并提示获胜方;若返回无胜者,再调用isDraw判断是否平局。

内容的提问来源于stack exchange,提问作者chard bermundo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:02:02