我正在编写一个3D扫雷型游戏,所以给定一个[x] [y] [z],我需要计算周围值的总和,假设它们不在界限范围内。
我的问题是如何在不进行大量检查的情况下执行此操作:
if ((x>0)&&(x<ARRAY_SIZE))
表示x,y和z?
由于
答案 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_包含“真实”字段?
这样,您将只有一个地方进行检查。