所以我最近在我的手机上玩了很多pacman,我想知道鬼魂是如何独立工作的.我在考虑如何编程.
我想到的一个选择是线程.所有4个幽灵都在自己的线程中运行,并以某种方式找到了pacman的位置.但是有四个线程正在工作并且同步会很困难似乎有点太多了.此外,谷歌在Javascript中写了pacman,它不支持线程,所以它可以在没有线程的情况下完成,并且必须有一种更简单的方法.
我的第二个想法是事件处理程序.我只是将pacman将触发的'directionChanged'事件连接到4个事件处理程序,每个鬼程一个.然后每个幽灵决定走向pacman的路径.我认为这更有可能发生了什么.但是如果事件处理程序是同步执行的话,它会变慢,因为路径必须按顺序计算,第4个鬼魂需要时间来改变方向,这可能会产生可见的滞后(可能).此外,当他们撞墙时,鬼魂会自己发射一个事件,他们的事件处理程序会改变鬼魂的方向.但考虑到pacman改变方向的频率和四个鬼魂的反应,事件处理程序似乎也有点太多了.
我说上述想法会有点太多,因为记得游戏是在30年前编写的,当cpu时间和内存稀缺时,所以我认为必须有一个更简单的方法.
而且,即使pacman仍然存在,鬼魂似乎也在遵循不同的路径.所有鬼魂都使用完全不同或不同优化的路径寻找算法吗?
我更感兴趣的是找出所有鬼魂似乎同时为他们自己的工作方式而不是他们使用的路径查找算法.思考?
基本上它是我正在研究的pacman克隆游戏.我有一个Enemy类,并且创建了这个类的4个实例,它们代表了游戏中的4个幽灵.
所有幽灵都在屏幕的随机区域启动,然后他们必须朝着pacman角色前进.当玩家控制pacman,移动它时,他们应该跟随它并采取最接近他的方式.
没有迷宫/障碍物(尚未)所以整个地图(400x400像素)都是开放的.
对于播放器和每个Ghost,我可以检索X,Y,图像宽度和高度属性.此外,我已经有了一个碰撞检测算法,所以不要担心,只是鬼魂找到他们的方式pacman.
我正在尝试实施Pacman.它运行正常,但到目前为止,鬼魂没有使用任何寻路,而是在每个路径交叉点上随机决定采用哪条路径.所以你可以想象,Pacman赢得比赛并不困难;)
所以我在Pacman中阅读了一些关于路径查找算法的内容,在这里我发现了一个非常好的答案:Pacman的寻路算法
答案是指http://home.comcast.net/~jpittman2/pacman/pacmandossier.html#Chapter%204
这一切都很好,但在我的Pacman实施中,有两个Pacman由两个不同的玩家玩.所以我想知道如何调整寻路算法,以便幽灵并不总是追逐一个玩家.
有关如何修改算法的任何想法,以便幽灵对两个玩家或多或少同等公平?