游戏逻辑问题

时间:2009-03-28 16:45:11

标签: java logic

我正在制作一个noughts并且穿过游戏(tic tac toe)并且在我的逻辑类中我用二维数组表示游戏的状态,但这是问题,我正在检查数组这样

 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,因此它总是找到三个匹配值,如何解决这个问题而不必更改我的整个代码

感谢

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

有一件事突然出现在我面前......为什么你用int而不是一个类代表这个?真的,这是一个简单的游戏,但是一个Piece类似乎跳出来作为一个相当明显的类。

另外,对于int,你真的有3个状态,大概是这样的:

0 = empty
1 = X
2 = Y

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

即使对于这样的简单事情,特别是当你刚刚开始时,尝试接受OOP,这是一种不同的思维方式,需要练习,所以尽可能多地练习!