Tic tac toe决定平局

时间:2011-11-29 16:51:06

标签: java if-statement for-loop

我正在创建一个tic tac toe游戏,并使用单维数组创建了该板。

我有以下代码,但即使董事会仍然是空的并且可以播放很多mor emoves,它也会返回true。有人可以告诉我哪里出错了。感谢

public boolean gameIsADraw() {
    for (int i = 0; i <= 9; i++) {
        if (!board[i].equals(" ")){
            if (gameIsAWin() == false) {

            }
            return true;
        }
        }

    return false;
}

public boolean gameIsAWin() {
        for (String s: winningConditions) {
            if (winningSituations(s.charAt(0), s.charAt(1), s.charAt(2)) == true){
                return true;
            }
        }
        return false;
    }

3 个答案:

答案 0 :(得分:0)

你可以尝试:

public boolean gameIsADraw(){
   for(int i = 0; i <= 9; i++){
     if(!board[i].equals(" ") && !gameIsAWin){
        break;
     }else if(i == 9) return true;
   }
 return false; 
}

我认为这会有效,但我没有测试过,如果没有,那就很抱歉。基本原则是,如果任何方块为空,并且有人赢了游戏,则for循环将中断,导致该方法返回false。但是,如果for循环确实到达最后一个索引,则它们必须是draw,因此该方法返回true。

答案 1 :(得分:0)

在上面的评论中,您确认有三种情况:

  • 如果某人赢了比赛,则返回false
  • 如果游戏尚未结束,请返回false
  • 否则,游戏是平局,返回true

假设gameIsAWin()正常工作,您可以单独检查这些情况:

public boolean gameIsADraw() {
    // If someone has won the game, return false
    if (gameIsAWin()) {
        return false;
    }

    // If the game is not over, return false
    for (int i = 0; i <= 9; i++) {
        if (" ".equals(board[i])) {
            return false;
        }
    }

    // Otherwise, the game is a draw, return true
    return true;
}

答案 2 :(得分:0)

如果你有一个3x3的棋盘,那么3就是你应该搜索的空盒子,好像3个盒子是空的,然后两个玩家仍然有希望,我希望你喜欢我的回答谢谢。

同样对于4x4的电路板,你应该检查

if(empty>=4) // game left empty