我发现在《吃豆人》中有很多关于幽灵AI的参考,但没有一个提到当幽灵被《吃豆人》吃掉后,眼睛是如何找到中央幽灵洞的。

在我的实现中,我实现了一个简单但糟糕的解决方案。我只是在每个角落都用硬编码标明了应该往哪个方向走。

有没有更好的/最好的解决办法?也许是适用于不同关卡设计的通用设计?


当前回答

我认为你的解决方案是正确的,比这更简单,就是制作一个更“现实”的新版本,鬼魂的眼睛可以穿过墙壁=)

其他回答

我用这种方法解决了一般关卡的这个问题:在关卡开始前,我从怪物洞中进行某种“洪水填充”;迷宫中除了墙之外的每一块瓦都有一个数字,表示它离洞有多远。所以当眼睛盯着一个距离为68的瓦片时,他们会看哪个相邻的瓦片距离为67;那就这么办吧。

我建议幽灵存储他从洞到吃豆人的路径。所以一旦鬼魂死了,他就可以沿着这条存储路径向相反的方向移动。

如果每个正方形都有一个到中心的距离值呢?这样,对于每个给定的正方形,你可以在所有可能的方向上得到相邻正方形的值。你选择最小值的正方形,然后移动到那个正方形。

数值将使用任何可用的算法预先计算出来。

Dtb23的建议是在每个角落随机选择一个方向,最终你会发现怪物洞听起来非常低效。

然而,你可以利用它低效的“回家”算法,通过在游戏难度中引入更多变化来让游戏变得更有趣。你可以通过应用上面的方法,比如你的路径点或洪水填充来做到这一点,但这样做是非确定性的。所以在每个角落,你都可以生成一个随机数来决定是走最优路线,还是随机方向。

随着玩家不断推进关卡,你将减少玩家选择随机方向的可能性。这将在关卡速度,幽灵速度,吃药丸暂停等之外为整体难度关卡添加另一个杠杆。你有更多的时间放松,而鬼魂只是无害的眼睛,但随着你的进步,时间会越来越短。

任何简单、可维护、可靠、性能足够好的解决方案都是好的解决方案。听起来你已经找到了一个很好的解决办法。

寻径解决方案可能比当前解决方案更复杂,因此更可能需要调试。它可能也会变慢。

在我看来,如果它没坏,就不要修。

EDIT

在我看来,如果迷宫是固定的,那么你当前的解决方案就是好的/优雅的代码。不要错误地把“好”或“优雅”等同于“聪明”。简单的代码也可以是“好的”和“优雅的”。

如果你有可配置的迷宫级别,那么也许你应该在最初配置迷宫时进行寻路。最简单的方法就是让迷宫设计师亲自动手。如果你有无数个迷宫,我才会费心自动化这个……或者用户可以自行设计。

(另外:如果路线是手工配置的,那么迷宫设计师可以通过使用次优路线来让关卡变得更有趣……)