1

我正在制作一个 noughts and crosses 游戏(tic tac toe),在我的逻辑类中,我用 2d 数组表示游戏的状态,但这是问题所在,我像这样检查数组

 if(gameModel[0][0] == gameModel[1][1] && gameModel[0][0] == gameModel[2][2]){
     return true;
    }
 if(gameModel[2][0] == gameModel[1][1] && gameModel[2][0] == gameModel[0][2]){
     return true;
    }

依此类推,对于所有 8 个条件,但是,数组在开始时使用 0 的所有值进行初始化,因此它总是找到三个匹配的值,我怎样才能解决这个问题而不必更改我的整个代码

谢谢

4

2 回答 2

5

在这种情况下,您只需要添加一个检查是否设置了值:

if (   gameModel[0][0] == gameModel[1][1] 
    && gameModel[0][0] == gameModel[2][2] 
    && gameModel[0][0] != 0) {
 return true;
}
于 2009-03-28T16:50:39.750 回答
3

有一件事让我大吃一惊……你为什么使用整数而不是类来表示这个?的确,这是一个简单的游戏,但 Piece 类似乎作为一个相当明显的类跳出来了。

此外,使用 int 你真的有 3 个状态,大概是这样的:

0 = empty
1 = X
2 = Y

所以你应该在检查它们是否是相同的值之前检查 0(空),它会更快(谁真的在乎,这不需要很快),并且更符合逻辑意义(是正方形空吗?如果是这样,那么不要费心检查方块是否保持相同的值)。

即使是这样简单的事情,尤其是当你刚开始的时候,试着拥抱 OOP,这是一种不同的思维方式,需要练习,所以尽可能多地练习!

于 2009-03-29T00:32:15.193 回答