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