如何简化tic tac toe胜利者检查

时间:2017-10-11 17:37:21

标签: java arrays for-loop

我正在用Java编写一个tic tac toe游戏,我不确定是否有更快/更简单的方法来检查获胜者。

if ( boardArray[0][0] == boardArray[0][1] && boardArray[0][0] == boardArray[0][2]) {
        System.out.println("The wimmer is: " + boardArray[0][0]);
    } else if ( boardArray[1][0] == boardArray[1][1] && boardArray[1][0] == boardArray[1][2]) {
        System.out.println("The wimmer is: " + boardArray[1][0]);
    } else if ( boardArray[2][0] == boardArray[2][1] && boardArray[2][0] == boardArray[2][2]) {
        System.out.println("The wimmer is: " + boardArray[2][0]);
    } else if ( boardArray[0][0] == boardArray[1][0] && boardArray[0][0] == boardArray[2][0]) {
        System.out.println("The wimmer is: " + boardArray[0][0]);
    }else if ( boardArray[0][1] == boardArray[1][1] && boardArray[0][1] == boardArray[2][1]) {
        System.out.println("The wimmer is: " + boardArray[0][1]);
    } else if ( boardArray[0][2] == boardArray[1][2] && boardArray[0][2] == boardArray[2][2]) {
        System.out.println("The wimmer is: " + boardArray[0][2]);
    } else if ( boardArray[0][0] == boardArray[1][1] && boardArray[0][0] == boardArray[2][2]) {
        System.out.println("The wimmer is: " + boardArray[0][0]);
    } else if ( boardArray[0][2] == boardArray[1][1] && boardArray[0][2] == boardArray[2][0]) {
        System.out.println("The wimmer is: " + boardArray[1][1]);
    } else {
        System.out.println("ITS A DRAW");
    }

我知道我可以使用for循环遍历不同的索引,但这只会将代码行减少大约2/3,因此不会产生巨大的差异

2 个答案:

答案 0 :(得分:2)

  

我知道我可以使用for循环遍历不同的索引,但这只会将代码行减少大约2/3,因此不会产生巨大的差异。

您可以继续使用循环来改进代码,因为它不仅减少了代码行数,还为您带来了很多好处。它改善了你的:

  • <强>可维护性

    要编辑代码,您只需编辑一次而不是编辑n次,其中n是它应该经历的迭代次数。

  • <强>可扩展性

    这可能不是一个好例子,但想象一下你想把电路板改成4 x 4.对于循环,你可能只需要更新电路板尺寸。所有其他代码几乎都可以不受影响。

  • <强>可读性

    代码的一个实例比多个重复的行更容易阅读。

  • 减少拼写错误的可能性

    代码较少,印刷错误的可能性较小。

  • 使调试更容易

    由于可读性提高,错误查找和调试实际上会更容易。

答案 1 :(得分:0)

前6个部分你不必通过else else语句。你可以使用循环。它将使您的代码紧凑。

public static void check(int[][] boardArray) {
    for (int i = 0; i < 3; i++) {
        if (boardArray[i][0] == boardArray[i][1] && boardArray[i][0] == boardArray[i][2]) {
            System.out.println("The winner is: " + boardArray[i][0]);
            return;
        } else if (boardArray[0][i] == boardArray[1][i] && boardArray[0][i] == boardArray[2][i]) {
            System.out.printf("The winner is: " + boardArray[0][i]);
            return;
        }
    }

    if (boardArray[0][0] == boardArray[1][1] && boardArray[0][0] == boardArray[2][2]) {
        System.out.println("The winner is: " + boardArray[0][0]);
    } else if (boardArray[0][2] == boardArray[1][1] && boardArray[0][2] == boardArray[2][0]) {
        System.out.println("The winner is: " + boardArray[1][1]);
    } else {
        System.out.println("ITS A DRAW");
    }
}