现在我正在尝试制作一种方法来检查我的tic tac toe游戏中是否存在平局。我现在已经构建了这个,但是经过2次移动,我的程序吐出“这是一个平局!”什么时候不应该。这是我的checkTie();方法代码。
static boolean checkTie() {
if(((table[0][0] & table[0][1] & table[0][2] & table[1][0]) & table[1][1] & table[1][2] & table[2][0] & table[2][1] & table[2][2]) == ('X' | 'O'));
return true;
}
我在桌子上有每个坐标,所以这在理论上应该有用,即使它构造得很差,我会承认。提前感谢您提供的任何帮助。
答案 0 :(得分:0)
你不能使用&在这里,因为它是有点明智的。它将添加所有位,结果为X或O,从而获得平局。
可能你想检查是否所有字段都被占用了。我会这样做
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
if (table[i][j] == '') // or however you store an empty field
{
return false;
}
}
}
return true;
答案 1 :(得分:0)
您的代码无法正常工作,因为您使用的是按位&
运算符。它用于根据不同的模式组合单个位,而不是用于组合字符或类似的东西。此外,如果没有领带,你不会返回任何东西。
您可以将代码更改为:
if ((table[0][0] == 'X' || table[0][0] == 'O') && ... ) {
return true;
}
然而,这将是很多打字;有更简单的解决方案,例如使用循环。
for (int x = 0; x < table.length; x++) {
for (int y = 0; y < table[x].length; y++) {
if (table[x][y] == ' ') {
return false;
}
}
}
return true;
这段代码循环遍历数组中的每个条目,如果一个仍为空,则返回false。