2

この2D配列マップがあるとしましょう

{ 0,0,0,0,7,1,1,1,1,1,1,1,1 },
{ 0,7,7,7,7,1,1,1,24,1,1,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,1,3,1 },
{ 0,7,23,23,23,23,23,23,24,1,1,3,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,24,23,23,23,23,23,23,1,1,1,1 },
{ 0,7,23,23,23,23,23,23,24,1,3,1,1 },
{ 0,7,24,24,24,24,24,24,24,1,3,1,1 },
{ 0,0,0,0,1,1,1,1,1,1,1,1,1 },

ブロックされたタイルを定義する整数でいっぱいの HashSet があります。プレイヤーが立っている場所からマップの一部をクリックしたときに、適切な経路探索を行うにはどうすればよいでしょうか? A* (ノードなどを使用)? 何を指示してるんですか?

ありがとう。

4

1 に答える 1

6

グラフのサイズが実際に説明した例の順序である場合、ダイクストラのアルゴリズムを安全に使用できます.ほぼ同時に徹底的な検索を行います:)

「nodes/etc の使用」に関するあなたのコメントについては、これはグラフですが、グラフの表現はやや不自然です。すべての配列値はノードであり、「エッジ」は配列内の隣接によって与えられます。ブロックされたタイルは、隣接を禁止することによって行うことができます (つまり、ブロックされたタイルのリストを調べて、現在検討中のノードから別のノードに到達できるかどうかを判断します)、または Yossarian が上で提案したように、そのタイルのコストを何かに設定するだけです。事実上無限に大きい。ただし、後者のアプローチを取る場合は、これらのタイルが誤ってソリューションになってしまうことがないようにする必要があります。

于 2010-07-21T15:30:02.777 に答える