淹没一个区域并构建一条星路
Floodfill an area and construct A star path
考虑一个基于 2d 网格的回合制游戏,其中一个棋子可以移动到一个未被占用的单元格,只要它只需要一定的步数就可以到达那里。选择该作品后,我想突出显示所有可能的目标单元格并显示它们 - 这是我使用填充填充递归构建可用单元格的地图然后将其覆盖在板上的地方。一旦选择了一个有效的正方形,我就会使用 A* 找到一条通往棋子将遵循的正方形的路径。
直觉上,这种方法似乎是在浪费工作——我费尽心力生成了一组可行走的方块,结果却不得不做额外的工作来搜索并实际行走。
这似乎是很多游戏的共同特征,是否已经有简化的方法?或者,假设填洪区生成的网格是不规则的,但保证可以步行,那么明显的过度工作是否可以忽略不计?
当然,只要记住你在flood-filling时走的路径就可以了(概念上,其实更像是广度优先搜索)。
这通常是通过在探索过程中记住前任单元格来完成的。一旦你有了最后的单元格(即用户点击它),沿着前面的链接向后遍历路径,直到找到起始节点。就像你在 A* 末尾所做的那样。唯一的区别是前向传播现在是通过 BFS 方法计算的。
考虑一个基于 2d 网格的回合制游戏,其中一个棋子可以移动到一个未被占用的单元格,只要它只需要一定的步数就可以到达那里。选择该作品后,我想突出显示所有可能的目标单元格并显示它们 - 这是我使用填充填充递归构建可用单元格的地图然后将其覆盖在板上的地方。一旦选择了一个有效的正方形,我就会使用 A* 找到一条通往棋子将遵循的正方形的路径。
直觉上,这种方法似乎是在浪费工作——我费尽心力生成了一组可行走的方块,结果却不得不做额外的工作来搜索并实际行走。
这似乎是很多游戏的共同特征,是否已经有简化的方法?或者,假设填洪区生成的网格是不规则的,但保证可以步行,那么明显的过度工作是否可以忽略不计?
当然,只要记住你在flood-filling时走的路径就可以了(概念上,其实更像是广度优先搜索)。
这通常是通过在探索过程中记住前任单元格来完成的。一旦你有了最后的单元格(即用户点击它),沿着前面的链接向后遍历路径,直到找到起始节点。就像你在 A* 末尾所做的那样。唯一的区别是前向传播现在是通过 BFS 方法计算的。