だから私は最近自分のセルでたくさんのパックマンをプレイしていて、幽霊が互いに独立してどのように機能しているように見えるのか疑問に思っています。私はそれがどのようにプログラムされるかについて考えていました。
私が考えたオプションの1つは、スレッドでした。4つのゴーストはすべて独自のスレッドで実行されており、どういうわけかpacmanの位置を見つけます。しかし、4つのスレッドが機能していると、同期が困難になるのは少々多すぎるようです。また、グーグルはスレッドをサポートしないJavascriptでpacmanを書いたので、スレッドなしでそれを行うことができ、より簡単な方法がなければなりません。
私の2番目の考えは、イベントハンドラーでした。pacmanが起動する「directionChanged」イベントをゴーストごとに1つずつ、4つのイベントハンドラーにワイヤリングするだけです。次に、各ゴーストは、pacmanに到達するためにどのパスを取るかを決定します。これは、起こっている可能性が高いと思います。ただし、イベントハンドラーが同期的に実行されると、パスを順番に計算する必要があり、4番目のゴーストが方向を変更するのに時間がかかり、これにより目に見えるラグが発生する可能性があるため、速度が低下する可能性があります。また、ゴーストは壁にぶつかったときに自分でイベントを発生させ、イベントハンドラーはゴーストの方向を変更します。しかし、pacmanが方向を変え、4人のゴーストが応答する頻度を考えると、イベントハンドラーも少し多すぎるように見えます。
30年前にCPU時間とメモリが不足していたゲームを思い出してください。もっと簡単な方法が必要だと思います。
また、pacmanがまだいるときでも、幽霊は別の道をたどっているようです。すべてのゴーストは、完全に異なる、または異なる方法で最適化されたパスファインディングアルゴリズムを使用していますか?
私は、すべてのゴーストが使用するパスファインディングアルゴリズムよりも、すべてのゴーストが同時にどのように機能するかを調べることに興味があります。考え?