4

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

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

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

这是Java,我不能使用任何导入的东西。

4

3 回答 3

10

假设数字是这样的:

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;
于 2012-10-28T19:48:44.480 回答
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, ...) 时,您需要使用模运算符 (%)。

于 2012-10-28T19:50:16.973 回答
0
int left   = (direction + 3) % 4;
int behind = (direction + 2) % 4;
int right  = (direction + 1) % 4;
于 2012-10-28T19:50:47.503 回答