当前位置:  开发笔记 > 人工智能 > 正文

吃豆人:眼睛怎么回到怪物洞?

如何解决《吃豆人:眼睛怎么回到怪物洞?》经验,为你挑选了7个好方法。

我发现很多人都提到了吃豆子鬼的人工智能,但他们都没有提到在吃掉鬼人吃鬼之后眼睛如何回到中央鬼洞.

在我的实现中,我实现了一个简单但可怕的解决方案.我只是在每个角落都硬编码应该采取哪个方向.

有没有更好/或最好的解决方案?也许是一个适用于不同级别设计的通用产品?



1> Kylotan..:

实际上,我说你的方法是一个非常棒的解决方案,与任何类型的寻路相比,几乎没有运行时间成本.

如果你需要将它推广到任意地图,你可以使用任何路径寻找算法 - 例如,广度优先搜索很容易实现 - 并且在游戏运行之前使用它来计算在每个角上编码的方向.

编辑(2010年8月11日):我刚刚参考了Pacman系统的一个非常详细的页面:吃豆人档案,因为我已经接受了答案,我觉得我应该更新它.这篇文章似乎并未涵盖明确返回怪物屋的行为,但它声明Pac-Man中的直接寻路是以下情况:

继续前进到下一个十字路口(虽然这基本上是一个特殊情况''在给出选择时,选择不涉及反转方向的方向,如下一步所示);

在十字路口,看看相邻的出口广场,除了你刚来的那个;

挑选最接近目标的一个.如果多个目标靠近目标,请按此顺序选择第一个有效方向:向上,向左,向下,向右.


我认为他的意思是你可以在运行时计算它(当你加载关卡时但开始播放它之前)但只是*一次.*这并不难维护.
+1编辑包括Pac人档案
预计算返回路径没有任何问题.您正在交换运行时性能的存储(路径).
谢谢.我认为我坚持这个解决方案.谁知道它是如何在最初的Pacman中完成的?
不,我没有.最初的问题使用了该术语,但它并不完全具有法律约束力.
是的,或者是否有创建地图的工具,作为其中的一部分.

2> Erich Kitzmu..:

我已经用通用级别解决了这个问题:在关卡开始之前,我从怪物洞做了一些"洪水填充"; 迷宫中不是墙的每块瓷砖都会有一个数字表示距离洞有多远.因此,当眼睛位于距离为68的瓷砖上时,它们看起来哪个相邻瓷砖的距离为67; 这是当时的方式.


是.在世界不是太大而无法使其可行的任何情况下,Floodfill都非常适合寻路.我认为它甚至可以在大型世界中使用,通过施加更粗糙的网格,其连通性是预先计算的.它会让事情略微偏离,但这会比我在这类游戏中看到的交通堵塞更好.
(我迟到了...)是洪水填充是好的,但是你实际上并不需要一个完整的数字,只是每个方格中的一个方向(两位)指向要使用的下一个方格.

3> Dan Vinton..:

对于更传统的寻路算法的替代方案,您可以查看(适当命名的!)Pac-Man Scent Antiobject模式.

你可以在启动时在迷宫周围弥漫出怪物孔的气味,让眼睛跟着它回家.

一旦设置了气味,运行时成本就非常低.


编辑:遗憾的是维基百科文章已被删除,因此WayBack Machine拯救 ...


这将是我的答案.它与ammoQ本质上是一样的,但我总是记得pacman气味:)
我迷上了一秒钟,然后立刻明白了"气味"是什么意思.这是描述这些标量场事的好方法!

4> Clement Herr..:

你应该看看一个寻路算法,比如Dijsktra的算法或A*算法.这就是您的问题所在:图形/路径问题.



5> Stephen C..:

任何可行的简单解决方案都是可维护,可靠且性能良好的解决方案.听起来像你已经找到了一个很好的解决方案......

路径寻找解决方案可能比您当前的解决方案更复杂,因此更有可能需要调试.它可能也会变慢.

IMO,如果没有损坏,请不要修理它.

编辑

IMO,如果迷宫是固定的,那么你当前的解决方案优秀/优雅的代码.不要错误地把"好"或"优雅"等同于"聪明".简单的代码也可以是"好"和"优雅".

如果你有可配置的迷宫级别,那么你可能只需在最初配置迷宫时进行寻路.最简单的方法是让迷宫设计师手工完成.如果你有一个巨大的迷宫,我只会打扰自动化......或者用户可以设计它们.

(旁白:如果手动配置路线,迷宫设计师可以通过使用次优路线使等级更有趣......)



6> Ivo Wetzel..:

在最初的Pacman中,Ghost通过他的"气味"找到黄色药丸,他会在地图上留下痕迹,幽灵会随意乱走直到找到气味,然后他们会简单地沿着气味路径直接引导他们玩家;选手.每次Pacman移动时,"气味值"都会减少1.

现在,扭转整个过程的一个简单方法就是拥有一个"鬼气金字塔",它的最高点位于地图的中心,然后幽灵就会朝着这种气味的方向移动.


这不正确; 如果他们都遵循这个算法,他们最终会追逐他的单个文件.每个幽灵的行为都不同; 您可以在维基百科文章中找到更多信息.

7> John Gardeni..:

假设您已经拥有追逐pacman所需的逻辑,为什么不重用它?只需改变目标.似乎比尝试使用完全相同的逻辑创建一个全新的例程要少得多.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有