パクマンとゴーストが自由に動き回ることができる「大きなフィールド」のピクセルグリッドがあれば、最短のパスは簡単です。ゴーストとパックマンの間の直線です。
しかし、「最短経路」は、必ずグラフ理論問題を解くことを意味しています。 (私は、グラフの知識、いくつかのグラフ理論、調整行列などを仮定しています)
上記の場合、各ピクセルをグラフ上のノードとみなしてください。各ノードはエッジによって隣接ノードに接続され、各エッジは等しい「重み」を有する(「上」のノードへの移動は「下のノード」への移動よりも遅くない)。
ですから、この持っている: - |パックマンが中央にある場合、それは非常に他のノードに移動することができます( "*" =ノード、=エッジ "/、\、")
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
を簡単に。現実にもっと近い
何かがこのようになります。今
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
、パックマンは、斜めに移動することはできません。中央から右下に行くには、1つではなく2つの「ホップ」が必要です。
進行継続するには、次の一番上にあるノードへの途中でノードから行くために、今すぐ
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
を、あなたは3ホップを必要としています。しかし、底に向かって移動するには1ホップしかかかりません。
ゲームボードの設定をグラフに簡単に変換できます。各「交差点」はノードです。 2つの交差点間のパスはエッジであり、そのパスの長さはそのエッジのウェイトです。
A *を入力してください。グラフを作成する(隣接行列またはノードのリストを使用する)ことにより、A *アルゴリズムを使用して最短経路を見つけることができます。他のアルゴリズムにはDijkstra'sが含まれる。他にもたくさん!しかし、まずグラフを使って問題を特定し、次にノードA(パックマン)からノードB(ゴースト)に行く方法をおもしろくする必要があります。
希望に役立ちます!
。 A *などは良い出発点です...私はそれが良い終点だったとは言いませんでした:-) – TofuBeer
私は実際にパックマンを長い間演奏していないので、それらの幽霊がいかにスマートになったか覚えている実際には、私はレベル3または4を過ぎたとは思えませんね、ちょっと、私は3年生でした) – coobird
スピードアップのために、彼らはあなたをよりターゲットにすることができます。彼らはレベルが上がるにつれて減少するランダム性をいくつか追加します。 – TofuBeer