プログラムを作成していますが、オブジェクトがどの方向を向いているかを追跡する必要があります。(北東南西)
これが最善の方法であるかどうかはわかりませんので、必要に応じて修正してください。
場合によっては、左右に曲がったり、方向を逆にしたりする必要があります。それを達成する最も簡単な方法は何ですか?
これは Java であり、インポートされたものは何も使用できません。
プログラムを作成していますが、オブジェクトがどの方向を向いているかを追跡する必要があります。(北東南西)
これが最善の方法であるかどうかはわかりませんので、必要に応じて修正してください。
場合によっては、左右に曲がったり、方向を逆にしたりする必要があります。それを達成する最も簡単な方法は何ですか?
これは Java であり、インポートされたものは何も使用できません。
数値が次のようになっていると仮定します。
0 - 北 | 1 - 東 | 2 - 南 | 3 - 西
次に、アルゴリズムを実行します
int reverse = (direction + 2) % 4;
逆方向になるはずです。
テストしてみましょう:
北: 0 + 2 = 2.2 % 4 = 2: 南
南: 2 + 2 = 4. 4 % 4 = 0: 北
東: 1 + 2 = 3. 3 % 4 = 3: 西
西: 3 + 2 = 5. 5 % 4 = 1: 東
成功!
左右に回転するのは、足し算または引き算と同じくらい簡単で、4 のモジュラスを使用して確実にループバックします。
int left = (direction +3) % 4;
int right = (direction + 1) % 4;
NORTH、EAST、SOUTH、WEST の値を持つ列挙型の使用:
もしも
NORTH=0
EAST=1
SOUTH=2
WEST=3
右折は
(dir + 1) % 4
左折は
(dir + 3) % 4
逆方向は
(dir + 2) % 4
注: 一般に、整数に加算してラップアラウンド (2、3、0、1、2、3、0、...) できるようにする場合は、モジュロ演算子 (%) を使用する必要があります。
int left = (direction + 3) % 4;
int behind = (direction + 2) % 4;
int right = (direction + 1) % 4;