algorithm - 淹没一个区域并 build 星形路径

标签 algorithm graph game-engine a-star flood-fill

考虑一个基于 2d 网格的回合制游戏,其中一个棋子可以移动到一个未占用的单元格,只要它只需要一定数量的步骤即可到达那里。当选择该 block 时,我想突出显示所有可能的目标单元格并显示它们 - 这是我使用洪水填充递归构建可用单元格 map ,然后将其覆盖在板上的地方。一旦选择了有效的方 block ,我就会使用 A* 来找到该棋子将遵循的方 block 的路径。

直观上,这种方法似乎浪费了工作 - 我费尽心思生成了一组可行走的方 block ,结果却需要做额外的工作来搜索它并实际行走它。

这似乎是许多游戏中的常见功能,是否已经有简化的方法?或者,考虑到洪水填埋产生的网格是不规则的,但保证可以步行,那么明显的过度工作可以忽略不计吗?

最佳答案

当然,只要记住你在洪水填充期间采取的路径即可(从概念上讲,它实际上更像是广度优先搜索)。

这通常是通过在探索过程中记住前驱单元来完成的。获得最终单元格(即用户单击它)后,按照前导链接遍历路径返回,直到找到起始节点。就像您在 A* 末尾所做的那样。唯一的区别是前向传球现在是通过 BFS 方法计算的。

关于algorithm - 淹没一个区域并 build 星形路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52753716/

相关文章:

c++ - 我应该为游戏和其他实时事件使用 Standard C++ Containers and Stuff 吗?

javascript - Phaser 框架中的平铺 map 碰撞

java - 颜色逻辑算法

algorithm - 找到向量中的最大距离

javascript - d3.js 中的轨道类型图

d3.js - 释放所有粘性节点

javascript - Crafty.js 教程

c# - 实心圆的中点圆算法

java - 覆盖更大线的最小线段数

algorithm - 关节点忽略通向直接父级的边的反转