我正在创建一个程序,我需要跟踪对象所面向的方向。(北东南西)
我不确定这是否是最好的方法,因此请在必要时纠正我。
在某些情况下,我需要向左或向右转,甚至是反向。实现这一目标的最简单方法是什么?
这是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;