2011-07-25 40 views
0

我在这个网站上有一个问题: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

感谢您的所有答复。

回答

3

起初,我建议你重新设计坐标。很好的例子是this question。但是不管坐标系如何,我假设你在将来(有些岩石,龙等等)在场上会有一些障碍,所以你应该设计一个通用的算法。我建议调查BFS,但不需要明确地构建图形,只是当你需要边缘时,你知道你的场地(深度1,正在工作)的相邻六边形是什么并在那里穿过。这是一般的方法。还有一个DFS,但是当相邻边的数量相当有限时,BFS通常被认为对可达性问题更有效。

+0

谢谢你的回答。我从来没有与这些复杂的事情和algorytms工作。到目前为止,我只是在PHP中编写一些应用程序(例如电子商店,某些俱乐部使用的OOP的复杂通信网络),并且在JavaScript中也只是一些更简单的事情。所以我没有像BFS这样的algorytms的经验和他们在JavaScript中的实现。你知道关于js中这个algorytms的任何教程和他们在这个问题上的应用或类似的东西吗? – Darkry

+0

不幸的是,我不知道这些链接,因为我在俄罗斯学校学习,所以我无法提供一个可信的链接到英语资源。你可以谷歌。我可以建议你尽量不要找到一般的图形算法(作为链接的维基页面),而是一些使用BFS从迷宫中退出的例子。它会给你一些我相信的见解。这很容易,如果你不考虑图表太多,而是关于骑士和龙和/或迷宫:) – unkulunkulu

+0

BFS在这里是非常自然的,因为它确保节点按照距离增加的顺序遍历,因此它可以很容易修改为仅找到距离某些固定距离的节点。 –