我正在制作扫雷克隆游戏。我写了一个算法,当单击周围没有地雷的方块时,它会递归地显示所有周围也没有地雷的邻居,然后是它们的邻居... 这个结果只需要一次点击。
它的功能正常,但速度太慢了。原始扫雷游戏可以立即显示这些方块,但在我的情况下,它们之间有一点延迟。
我编写了以下代码:
如何让它变得更快?
我编写了以下代码:
private void RevealNeighbor(int x, int y) {
foreach(var neighbor in _neighbors) {
try {
Tile tile = _tiles[x + neighbor[0], y + neighbor[1]];
if(tile.TileType == TileType.Empty && tile.Hidden) {
tile.Reveal();
if(tile.Number == 0) {
RevealNeighbor(x + neighbor[0], y + neighbor[1]);
}
}
}
catch(IndexOutOfRangeException) {
}
}
}
_neighbors
是一个数组的数组,其中包含8个邻居位置的偏移量:
private readonly int[][] _neighbors = new[] {
new[] {-1, -1},
new[] {0, -1},
new[] {1, -1},
new[] {1, 0},
new[] {1, 1},
new[] {0, 1},
new[] {-1, 1},
new[] {-1, 0}
};
如何让它变得更快?
tile.Reveal();
会触发渲染吗? - Karthik T