【问题标题】:Pathfinding Algorithm For Pacman [closed]Pacman 的寻路算法
【发布时间】:2011-02-05 22:28:40
【问题描述】:

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

【问题讨论】:

    标签: path-finding pacman


    【解决方案1】:

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

    Here's a description of how the ghosts' chase AI works(它们各自的工作方式不同)。请务必阅读以上章节,了解他们如何实际尝试访问他们的target tile。该页面是对吃豆人的精彩深入分析,读起来很有趣。

    【讨论】:

    【解决方案2】:

    关于寻路,请注意以下事项

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

    【讨论】:

    • 很遗憾,吃豆人的拆解已经被移除了。
    • 正如您所说,A* 在一般情况下并不是最优的。只有给定一个可接受的和一致的启发式,才能保证找到最佳解决方案。
    • @b3bop 您对一般情况是正确的;我说的是在网格(即吃豆人迷宫)上使用曼哈顿距离的情况。在这种情况下,启发式既可接受又一致,A* 将得出与 BFS 相同的答案。
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

      您可能想考虑一下 Pacman 的原始设计者使用的反对象方法,您可以阅读 herehere

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

      祝你好运!

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 谢谢!我有一种预感,可能是这样的
        • bfs 太慢了
        • 对于一个简单的吃豆人游戏来说,这不太重要。
        【解决方案6】:

        相关问题,大概回答了你的问题:Path finding in a Java 2d Game?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-04-16
          • 1970-01-01
          • 2016-08-20
          • 1970-01-01
          • 1970-01-01
          • 2015-07-23
          • 1970-01-01
          相关资源
          最近更新 更多