如果int为0表示北,1表示东方等...如何反转方向?

时间:2012-10-28 19:45:10

标签: java

我正在创建一个程序,我需要跟踪对象面向的方向。 (北,东,南,西)

我不确定这是否是最好的方法,请在必要时纠正我。

在某些情况下,我需要向左或向右转,甚至反向。实现这一目标的最简单方法是什么?

这是Java版本,我不能使用任何导入的内容。

3 个答案:

答案 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;