簡體   English   中英

如何簡化井字游戲贏家檢查

[英]How to simplify tic tac toe winner checking

我正在用Java編寫井字游戲,但不確定是否有更快/更容易的方法來檢查獲勝者。

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,因此不會有太大的不同

我知道我可以使用for循環遍歷不同的索引,但這只會使代碼行減少約2/3,因此不會有太大的區別。

您可以繼續使用循環來改進代碼,因為它不僅可以減少代碼行數,而且還可以為您帶來很多好處。 它可以改善您的:

  • 可維護性

    要編輯代碼,您只需要編輯一次即可,而不是對其進行n次編輯,其中n是它應該經歷的迭代次數。

  • 可擴展性

    這可能不是一個很好的例子,但是假設您想將電路板更改為4 x4。使用循環,您可能只需要更新電路板尺寸即可。 所有其他代碼幾乎都保持不變。

  • 可讀性

    該代碼的一個實例比多行重復更容易閱讀。

  • 減少打字錯誤的機會

    更少的代碼,更少的印刷錯誤。

  • 使調試更容易

    由於提高了可讀性,錯誤查找和調試實際上將更加容易。

您不必對前6個部分進行if 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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM