0

私はJavascriptでA*パスファインディングアルゴリズムのバージョンを実装しています。正気を保つために、疑似多次元配列(つまりネストされた配列)を使用しています。A *に慣れていない場合、1つのステップは、「開いている」ノードの周囲のノードをチェックすることです。

「開いている」ノードの場所を渡し、アレイ内の隣接するノードを確認するにはどうすればよいですか?配列の場所はファーストクラスであるべきではありませんか?

function checknode (node) //Such as [5,2]
{
     if(array[node+1][node]==something) //In this case [6,2]

}

ええ、私はx座標とy座標を別々の引数として渡すことができることを知っています:

function checknode (nodex, nodey)
{
     if(array[nodex+1][nodey]==something)
}

しかし、私のコードに関する限り、これが意味することは望ましくありません。

編集:基本的に、配列(5,2)のアイテムの場所を関数に渡して操作できるかどうか疑問に思っています。

4

2 に答える 2

1

2 つの座標を含む複合値を (オブジェクトを使用して) 作成できます。そうすれば、単一のパラメーターとして渡すことができます。

function checknode(node) {
  if (array[node.x + 1][node.y] == something) //In this case [6,2]
}

呼び出しの例:

checknode({ x: 5, y: 2 });
于 2012-09-13T23:56:13.003 に答える
0

あなたが正確に何を望んでいるのかわかりませんが、配列を渡しているようです。次のようなものが欲しいですか

function checknode (node) //Such as [5,2]
{
     if( array[ node[0]+1 ][node[1]]==something) //In this case [6,2]

}

したがって、ノードが配列、つまりノード= [5,2]の場合、このコードは「何か」で配列[6] [2]をチェックします

于 2012-09-13T23:54:06.683 に答える