寻找一种有效的方法来对3D阵列的周围值求和

时间:2011-04-04 19:16:42

标签: java arrays math multidimensional-array performance

我正在编写一个3D扫雷型游戏,所以给定一个[x] [y] [z],我需要计算周围值的总和,假设它们不在界限范围内。

我的问题是如何在不进行大量检查的情况下执行此操作:

if ((x>0)&&(x<ARRAY_SIZE)) 

表示x,y和z?

由于

2 个答案:

答案 0 :(得分:4)

非常简单:让你的erray 2元素在每个维度上变大,然后围绕它制作一个 0-frame 。你的循环都从1运行到ARRAY_SIZE-1,访问index-1和index + 1不会再造成麻烦,以防你处于边界。

答案 1 :(得分:0)

如何为游戏板编写自己的自定义类,如

    class Minesweeper3DBoard {
      public MinesweeperField getField(int x, int y, int z) {
        if (x < 0 || x >= ARRAY_SIZE || y < 0 || y >= ARRAY_SIZE || z < 0 || z >= ARRAY_SIZE)  {
   return NullMineSweeperField.Instance(); 
}
   else {
     return Fields_[x][y][z];
   }

      }
    };

NullMineSweeperField实现Null对象和Singleton模式,Fields_包含“真实”字段?
这样,您将只有一个地方进行检查。