我正在制作一个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,因此它总是找到三个匹配值,如何解决这个问题而不必更改我的整个代码
感谢
答案 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,这是一种不同的思维方式,需要练习,所以尽可能多地练习!