与えられたX、Yポイントで前後左右に動く可能性のあるオブジェクトが与えられます。最も効率的で人間の自然な方法で、与えられた動きの仕組みを使用して、オブジェクトをX、Yポイントに効率的に向ける方法。
オブジェクトはリアルタイムで移動できます。「startMoving|Direction |()」および「stopMoving | Direction |()」と指示することができます。追加のひねりと私が問題を抱えている部分として、オブジェクトの向きは決して知られていないが、その現在の位置だけがわかっているので、アルゴリズムは方向を「検出」する必要があります。オブジェクトの場所は、500〜1秒間隔で別のスレッドで更新されます。アルゴリズム内の場所を更新するための「リクエスト」はいつでも行われますが、すぐに利用できるわけではなく、アルゴリズムはそれを考慮に入れる必要があります。requestAndWaitForCoordUpdate()のようなことをすることは完全に受け入れられますが、おそらく必要ではありません。
さらに、障害物は表示されません。ほとんど開いた平面上にあり、パス間の直線から遠く離れていると想定でき、障害物に遭遇する可能性があります。ターゲットとソースの間の距離の1/4は、特定の直接パスで幅が利用可能であると想定するのが安全です。
また、このシナリオでA *が適用されるかどうかわからないことにも言及します。適用される場合は、制約を考慮してA*を実装する方法がわかりません。ここでの唯一の実変数は、オブジェクトの向きです。
次にいくつかのサンプルコードを示します。
public int[] currentCoords;
public void movement() {
currentCoords[0] = 1005; // starting y coord
currentCoords[1] = 1007; // starting x coord
moveTo(1050, 1025);
}
public void moveTo(int x, int y) {
... how?
}
public void threadUpdatingCoords() {
... periodically check for source coord updates
... between 200ms and 1000ms apart.
}