我正在寻找一种用于我正在制作的赛车游戏的算法。地图/关卡/轨道是随机生成的,所以我需要找到两个位置,起点和目标,以充分利用地图。
- 该算法是在二维空间内工作
- 从每一点出发,只能从四个方向穿越到下一个点;上下左右
- 点只能被阻塞或非阻塞,只能遍历非阻塞点
关于距离的计算,应该不是没有更好的词的“鸟道”。如果 A 和 B 之间有墙(或其他阻挡区域),则 A 和 B 之间的路径应该更长。
我不确定从哪里开始,非常欢迎评论,并且建议的解决方案在伪代码中是首选。
编辑:对。在查看了gs 的代码后,我又试了一次。这次我用 C++ 编写而不是 python。但是,即使在阅读了Dijkstras 算法、洪水填充和Hosam Alys 解决方案之后,我仍然没有发现任何关键的区别。我的代码仍然有效,但没有你看起来运行的那么快。完整的源代码在paste上。唯一有趣的行(我猜)是第 78-118 行的 Dijkstra 变体本身。
但速度不是这里的主要问题。如果有人愿意指出算法中的差异,我将非常感谢您的帮助。
- 在 Hosam Alys 算法中,他从边界而不是每个节点扫描的唯一区别是什么?
- 在 Dijkstras 中,您跟踪并覆盖步行距离,但不是在洪水填充中,但仅此而已?