【发布时间】:2017-11-17 19:55:16
【问题描述】:
我正在玩一个用户玩电脑的井字游戏。用户总是 X,计算机是 O。我编写了代码来检查每一行、每一列和对角线,看看用户或计算机是否获胜。如果两者都不是,那么它只会打印错误。如果用户赢了“人类玩家赢”或计算机赢了“计算机赢”,我希望游戏打印出来。我只是不知道如何将它添加到布尔方法中。
public static boolean checkWin()
{
//checks for human win
if ("X".equals(board[0][0]) && "X".equals(board[0][1]) && "X".equals(board[0][2]))
return true;
else if ("X".equals(board[1][0]) && "X".equals(board[1][1]) && "X".equals(board[1][2]))
return true;
else if ("X".equals(board[2][0]) && "X".equals(board[2][1]) && "X".equals(board[2][2]))
return true;
else if ("X".equals(board[0][0]) && "X".equals(board[1][0]) && "X".equals(board[2][0]))
return true;
else if ("X".equals(board[0][1]) && "X".equals(board[1][1]) && "X".equals(board[2][1]))
return true;
else if ("X".equals(board[0][2]) && "X".equals(board[1][2]) && "X".equals(board[2][2]))
return true;
else if ("X".equals(board[0][0]) && "X".equals(board[1][1]) && "X".equals(board[2][2]))
return true;
else if ("X".equals(board[0][2]) && "X".equals(board[1][1]) && "X".equals(board[2][0]))
return true;
//checks if computer has won
else if ("O".equals(board[0][0]) && "O".equals(board[0][1]) && "O".equals(board[0][2]))
return true;
else if ("O".equals(board[1][0]) && "O".equals(board[1][1]) && "O".equals(board[1][2]))
return true;
else if ("O".equals(board[2][0]) && "O".equals(board[2][1]) && "O".equals(board[2][2]))
return true;
else if ("O".equals(board[0][0]) && "O".equals(board[1][0]) && "O".equals(board[2][0]))
return true;
else if ("O".equals(board[0][1]) && "O".equals(board[1][1]) && "O".equals(board[2][1]))
return true;
else if ("O".equals(board[0][2]) && "O".equals(board[1][2]) && "O".equals(board[2][2]))
return true;
else if ("O".equals(board[0][0]) && "O".equals(board[1][1]) && "O".equals(board[2][2]))
return true;
else if ("O".equals(board[0][2]) && "O".equals(board[1][1]) && "O".equals(board[2][0]))
return true;
else
//it's a tie
return false;
}
【问题讨论】:
-
我建议你编写另一种方法,它首先调用
checkWin()。然后根据返回的结果打印出一条消息。不要修改checkWin()打印消息 -
虽然打印赢取的人/计算机可以放在那里,但它可能更适合放在不同的位置。您为什么要专门将其放入该方法中?我建议保持方法尽可能简单,在这种情况下保持
checkWin方法只检查胜利 -
另外,您的逻辑存在缺陷 - 这似乎假设唯一可能的板配置是“有人赢了”和“它是平局”,这绝对是不是是的。
-
我看到的另一个问题是:如果有人赢了,它会说真,只有平局才会说假。编辑:错字和对@EJoshuaS 表示感谢,因为相同的评论
-
想一想:如果您在玩家将其符号放入移动后检查某人是否获胜,那么显然获胜者就是做出该移动的人。
标签: java