对角线获胜者检查,井字游戏

时间:2018-10-09 15:57:31

标签: java matrix tic-tac-toe

我有这种方法来检查井字游戏的获胜者

public boolean hasWinner(Cell shape, int row, int col) {
    int count = 0;
    for(int i=0;i<WIDTH;i++){
        if(this.board[row][i]==shape){
            count++;
        }
        else{
            count=0;
        }
        if(count>=5){
            return true;
        }
    }
    count=0;
    for(int i=0;i<HEIGHT;i++){
        if(this.board[i][col]==shape){
            count++;
        }
        else{
            count=0;
        }
        if(count>=5){
            return true;
        }
    }

我已经写了检查代码,如果在最后添加的符号的行和列上连续有5个相同的符号,现在我需要检查两个对角线,最后添加的符号位于该对角线上。有什么花招,还是我必须写board[row+1][col+1]==shape && board[row+2][col+2]==shape...之类的东西?

1 个答案:

答案 0 :(得分:0)

我现在无法真正为您编写解决方案,但我认为您正在询问此周期:

        Cell shape = null;
        boolean win = true;

        for(int j=0, k = 0; j < WIDTH) {
            if(shape == null) {
                shape = this.board[j][k];
            } else {
                win = win && this.board[j][k] == shape;
            }

        }

贯穿主对角线,因此您无需手动编写东西。那你需要对第二对角线做同样的事情

但是,老实说,如果我是你,并且我有3个或更少的行/列,那么我将按照您的建议出于可读性目的进行操作