我正在创建一个程序,我需要跟踪对象面向的方向。 (北,东,南,西)
我不确定这是否是最好的方法,请在必要时纠正我。
在某些情况下,我需要向左或向右转,甚至反向。实现这一目标的最简单方法是什么?
这是Java版本,我不能使用任何导入的内容。
答案 0 :(得分:10)
假设数字是这样的:
0 - 北| 1 - 东| 2 - 南| 3 - 西部
然后通过算法运行
int reverse = (direction + 2) % 4;
应该产生相反的方向。
让我们测试一下:
北:0 + 2 = 2. 2%4 = 2:南
南:2 + 2 = 4. 4%4 = 0:北
East:1 + 2 = 3. 3%4 = 3:West
West:3 + 2 = 5. 5%4 = 1:East
成功!
向左和向右转动就像添加或减去一样简单,然后取4的模数以确保它循环回来。
int left = (direction +3) % 4;
int right = (direction + 1) % 4;
答案 1 :(得分:3)
使用值为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,...)时,您需要使用模运算符( %)。
答案 2 :(得分:0)
int left = (direction + 3) % 4;
int behind = (direction + 2) % 4;
int right = (direction + 1) % 4;