19

我想实现游戏吃豆人。对于 AI,我正在考虑使用 A* 算法,在许多论坛上都看到过。但是,我为一些简单的寻路(从 a 点到 b 点,中间有某些障碍物)实施了广度优先搜索,并发现它总是给出最佳路径。我想这可能是因为在像吃豆人这样使用简单寻路的游戏中,图表中没有成本的概念。那么,如果我在 Pacman 中使用 BFS 而不是 A* 进行寻路可以吗?

4

6 回答 6

25

好吧,这取决于,你真的想让鬼像在吃豆人中那样工作吗?

下面是关于鬼魂追逐 AI 工作原理的描述(它们各自的工作方式不同)。请务必阅读上述章节,了解他们如何实际尝试到达目标图块。该页面是对吃豆人的精彩深入分析,读起来很有趣。

于 2010-04-08T23:04:27.787 回答
19

对于寻路,请注意以下几点

如果您在谈论幽灵 AI,请查看 Chad 提到的页面:吃豆人档案- 幽灵实际上只是在确定如何到达目标图块时使用欧几里德距离,这使得它们在寻找 Pac 方面非常糟糕在某些情况下是人。

于 2010-04-08T23:35:48.280 回答
4

这取决于。BFS 既完整又最优(从某种意义上说,它找到了最优解)

不足之处?可能需要很长时间才能找到它!此外,根据问题的影响因素,您可能会很快耗尽内存。

如果你没有性能问题,那就保留 BFS,但如果你想在一个巨大的迷宫中尝试它,那么可能需要一段时间才能得到解决方案。

我建议您尝试 A*,恕我直言,最好的搜索策略。即使你对 BFS 没有任何问题,A* 也是一个很好的算法,你会学到很多很酷的东西。

于 2010-04-08T23:06:33.620 回答
3

您可能需要考虑 Pacman 的原始设计者使用的反对象方法,您可以在此处此处阅读有关它的信息。

但是,要回答您的问题,请使用有效的方法!如果您从 BFS 获得了良好的结果,请使用它。只要记住将寻路抽象到足够的程度,以便以后找到更好的东西时可以替换它。

祝你好运!

于 2010-04-08T23:12:29.863 回答
1

如果不使用边权重,BFS 将始终给出最短路径。如果您不需要边缘权重,我会使用它。您以后随时可以切换。

于 2010-04-08T23:04:09.033 回答
0

相关问题,这可能会回答您的问题:Java 2d 游戏中的路径查找?

于 2010-04-08T23:06:14.010 回答