【问题标题】:Game logic issue游戏逻辑问题
【发布时间】:2009-03-28 16:45:10
【问题描述】:

我正在做一个 noughts and crosses 游戏(井字游戏),在我的逻辑类中,我用 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 的所有值进行初始化,因此它总是找到三个匹配的值,我怎样才能绕过这个问题而不必更改我的整个代码

谢谢

【问题讨论】:

    标签: java logic


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      0 = empty
      1 = X
      2 = Y
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多