私は現在Javaで自律型ロボットをプログラミングしています。ここに私の問題があります。定義済みの一連の番号を持つJAVAループ
は、私が唯一の4可能な向きがある考えると、すべての時間で私のロボットの向きを知りたい:
上/下/左/右
は、私は次の番号でこれらの位置のそれぞれを定義します:UpとDown = 0、左= 1、右= -1
は、だから私のロボットが現在必要があります(最大言う) "0" 志向、と私は値、右に90度回転していると言います1に変更します。右に90度回転すると再び0に戻ります。
したがって、次のシーケンスがあります。0、-1,0,1(任意の時点から開始できます)。
基本的に私のロボットはさまざまなタイプの障害に遭遇します。彼が1つを満たすたびに、彼は右または左に回るでしょう。私は彼がいつも "上"の方向を向けるようにしたい。ロボットが「0」の位置にあるときに回転すると、ロボットはYの位置に影響を与えないので問題にはなりません(X-Y軸を考慮する)。しかし、彼が1位か-1位にいる場合、彼は90°* 1または90°*(-1)を回す必要があります。
私は、ロボットが回転している右(または左)の「四分円」の数に応じて、現在の値を正しく変更する方法を見つけるのに苦労しています。私は(-1)の指数を考えましたが、どうやって分かりませんでした。
お手伝いできますか?
ありがとうございました!
P.S.条件があっても値を確認できるのは分かっていますが、クラスがたくさんあり、回転させる方法を何度も使うので、できるだけ短く簡単にする必要があります。
なぜ別々の値をあきらめないのですか? – GurV
@ Gurwinderと同様に、-1から1の範囲の代わりに "N、S、E、W"を使用することをお勧めします。 –
全部の仕組みが基本であり、基本的にはこれらの値が他のメソッドの乗数として使用されるためです。 @Gurwinder – FredV