六边形地图上的移动算法



我在这个网站上有一个问题:http://www.dark-project.cz/wesnoth/map-view/1(点击该单位)。在我的Javascript源代码http://www.dark-project.cz/wesnoth/js/map/base.js(最后一个$('div.unitImg').click(function()函数),我想标记所有六边形的单位不能去。

我有一个相当复杂的算法,当移动为1时工作正确,但如果它是更高的,它不工作(尝试移动2)。

你对找到正确的六边形的算法有什么想法吗?

下面是坐标编号的示例:http://www.dark-project.cz/wesnoth/coor.png

感谢大家的回复。

首先,我建议您重新设计坐标。这个问题提供了一个很好的例子。

但不管坐标系统如何,我假设你在未来的领域中会遇到一些障碍(一些岩石,龙等),所以你应该为此设计一个通用算法。我建议调查BFS,但你不需要明确地构建图形,只是当你需要边时,你知道你的领域上有哪些相邻的六边形(深度1,这是有效的)并遍历那里。这是一般的方法。也有DFS,但当相邻边的数量相当有限时,BFS通常被认为对可达性问题更有效。

最新更新