【问题标题】:Looking for an efficient way to sum the surrounding values of a 3D array寻找一种对 3D 数组的周围值求和的有效方法
【发布时间】:2011-04-04 19:16:42
【问题描述】:

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

我的问题是如何在没有无数次检查的情况下做到这一点:

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

对于 x、y 和 z?

谢谢

【问题讨论】:

    标签: java arrays math multidimensional-array performance


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

          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 Object 和 Singleton 模式,以及 Fields_ 包含“真实”字段?
      这样,您将只有一个进行检查的地方。

      【讨论】:

        猜你喜欢
        • 2023-01-19
        • 1970-01-01
        • 2022-10-03
        • 2017-10-02
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 2013-02-15
        • 1970-01-01
        相关资源
        最近更新 更多