ピクセルのグリッド (パックマンとゴーストが自由に動き回れる「大きなフィールド」) がある場合、最短経路は簡単です。つまり、ゴーストとパックマンの間の直線です。
しかし、「最短経路」とは常に、グラフ理論の問題を解決しようとしていることを意味します。(グラフ、いくつかのグラフ理論、調整行列などの知識があることを前提としています!)
上記の場合、各ピクセルをグラフ上のノードと見なします。各ノードはエッジによって隣接するノードに接続され、各エッジの「重み」は等しくなります (「上」のノードへの移動は、「下」のノードへの移動よりも遅くはありません)。
したがって、次のようになります: ("*" = ノード、"-、/、\、|" = エッジ)
*-*-*
|\|/|
*-*-* ... (etc)
|/|\|
*-*-*
パックマンが中央にある場合、他のノードに非常に簡単に移動できます。
より現実に近いものはこれかもしれません:
*-*-*
| | |
*-*-* ... (etc)
| | |
*-*-*
これで、パックマンは斜めに移動できなくなりました。中央から右下に移動するには、1 回ではなく 2 回の「ホップ」が必要です。
進行を続けるには:
*-*-*-*
| | | |
| | | |
| | | |
*-*-*-*
| | | |
*-*-*-*
ここで、中間のノードから最上部のノードに移動するには、3 つのホップが必要です。ただし、一番下に移動するには 1 ホップしかかかりません。
ゲームボードのセットアップをグラフに変換するのは簡単です。各「交差点」はノードです。2 つの交点の間のパスがエッジであり、そのパスの長さがエッジの重みです。
入力します*。グラフを作成する (隣接行列またはノードのリストを使用する) ことにより、A* アルゴリズムを使用して最短経路を見つけることができます。他のアルゴリズムにはダイクストラのものがあります。などなど!しかし、最初にグラフの観点から問題を組み立てる必要があります。次に、ノード A (パックマン) からノード B (ゴースト) に移動する方法をいじります。
それが役立つことを願っています!