【发布时间】:2011-04-01 22:48:40
【问题描述】:
所以我最近在我的手机上玩了很多吃豆人,我想知道这些鬼魂似乎是如何独立工作的。我在想它会如何被编程。
我想到的一个选项是线程。所有 4 个幽灵都在各自的线程中运行,并以某种方式找到了 pacman 的位置。但是让四个线程工作似乎有点过分,而且同步会很困难。另外,google 用 Javascript 编写的 pacman 不支持线程,所以它可以在没有线程的情况下完成,并且必须有一个更简单的方法。
我的第二个想法是事件处理程序。我只是将 pacman 将触发的 'directionChanged' 事件连接到 4 个事件处理程序,每个事件处理程序一个。然后每个幽灵决定走哪条路去吃豆子。我认为这更可能是正在发生的事情。但如果事件处理程序同步执行,它可能会变慢,因为路径必须按顺序计算,并且第 4 个重影需要时间来改变方向,这可能会产生明显的延迟(可能)。此外,当鬼魂撞墙时,它们会自己触发一个事件,并且它们的事件处理程序会改变鬼魂的方向。但是考虑到 pacman 改变方向和四个幽灵响应的频率,事件处理程序似乎也有点太多了。
我是说上面的想法有点过头了,因为记得这个游戏是 30 年前写的,当时 cpu 时间和内存都很稀缺,所以我认为必须有一个更简单的方法。
此外,即使吃豆人静止,鬼魂似乎也在走不同的道路。是否所有的幽灵都使用完全不同或不同优化的寻路算法?
我更感兴趣的是找出所有幽灵似乎如何同时为自己工作,而不是他们使用的寻路算法。想法?
【问题讨论】:
标签: pacman