Java 博弈逻辑问题

Java 博弈逻辑问题,java,logic,Java,Logic,我正在制作一个零和十字形游戏(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] ==

我正在制作一个零和十字形游戏(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初始化,因此它总是找到三个匹配值,我如何在不改变整个代码的情况下解决这个问题


谢谢

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

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

在这种情况下,如果设置了值,则只需添加一个检查:

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

有一件事突然向我袭来,那就是。。。为什么要使用INT而不是类来表示这一点?的确,这是一个简单的游戏,但是一个Piece类似乎是一个非常明显的类

此外,对于int,实际上有3种状态,大概类似于:

0 = empty
1 = X
2 = Y
因此,您应该先检查0(空),然后再检查它们是否是相同的值,这样会更快(谁真的在乎,这不需要很快),并且更有逻辑意义(正方形是空的吗?如果是,那么就不要检查正方形是否具有相同的值)


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

有一件事突然向我袭来,那就是。。。为什么要使用INT而不是类来表示这一点?的确,这是一个简单的游戏,但是一个Piece类似乎是一个非常明显的类

此外,对于int,实际上有3种状态,大概类似于:

0 = empty
1 = X
2 = Y
因此,您应该先检查0(空),然后再检查它们是否是相同的值,这样会更快(谁真的在乎,这不需要很快),并且更有逻辑意义(正方形是空的吗?如果是,那么就不要检查正方形是否具有相同的值)

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