我正在创建一个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;
}
答案 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)
在上面的评论中,您确认有三种情况:
假设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