如何检查没有固定维度的二维数组的第一行是否都具有相同的值?

How can I check if the first row of a 2D array with no fixed dimension all have the same value?

我正在 Java 中制作一款井字游戏,它具有可自定义的尺寸特征(用户可以选择玩 3x3、4x4、5x5 等),并且正在研究寻找赢家的逻辑.目前我正在尝试横向检查是否获胜。

我想制作一个嵌套的 for 循环来检查承载电路板的二维数组,但我不确定如何执行它。此代码的问题:

for (int i = 0; i < dimension; i++) {
        if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != '-') {
                // you won!
        }
}

...它的逻辑是针对3x3游戏固定的,而不是针对任何其他维度的。我只知道如何将值添加到二维数组中,那么如何检查这些值是否相等?提前谢谢你。

我不确定在更高维度上赢得井字游戏的规则,所以假设你必须填满整个 row/column 才能获胜。

将 if 分为两部分:第一个字符的检查和比较。然后使用第二个 for 循环进行比较,如下所示:

for (int i = 0; i < dimension; i++) { // iterate rows
    // check for first character
    if (board[i][0] == '-') {    // if wrong character...
        continue;                // ... check next row
    }

    boolean won = true;

    for (int j = 0; j < dimension - 1; j++) { // iterate columns
        if (board[i][j] != board[i][j+1]) {   // if other character...
            won = false;                      // ...not winnable with this column and...
            break;                            // ...stop iteration of columns
        }
    }

    if (won) {
        // you won!
    }
}

如果您在所有维度上以较少的交叉 'X' 获胜,则必须添加第三个循环来遍历可能的起点,或者您可以计算列中交叉的数量并重新设置数字如果有 'O'.