对于我的基于图块的游戏,我需要根据给定的点偏移量(两点之间的差值)计算方向。例如,假设我站在点(10,4),我想移动到点(8,6)。我移动的方向是西北方向。计算这个最好的方法是什么?根据点偏移量计算方向
这里是我在Java中的基本实现。
public int direction(int x, int y) {
if (x > 0) {
if (y > 0) {
return 0; // NE
} else if (y < 0) {
return 1; // SE
} else {
return 2; // E
}
} else if (x < 0) {
if (y > 0) {
return 3; // NW
} else if (y < 0) {
return 4; // SW
} else {
return 5; // W
}
} else {
if (y > 0) {
return 6; // N
} else if (y < 0) {
return 7; // S
} else {
return -1;
}
}
}
当然,它可以被优化或缩短。任何帮助?谢谢。
这是否甚至编译?当x和y都为0时,它不会返回一个值。 – 2010-08-29 12:37:49
它看起来很好,因为它(模仿Matti找到的'else')。您可以将“return”语句分解出来,但这通常是在字节码级别上可能不是一个的优化,而编译器应该能够为您做的一个优化。你可以计算条件'y <0' and 'y> 0'的计算结果,但再次,一个体面的编译器应该能够为你做到这一点。您可以更改某个方向的表示方式(例如,一对N/S轴和W/E轴分别为-1,0或1的数字)使此方法更简单,但似乎没有必要。 – 2010-08-29 12:40:26
@Matti Virkkunen啊你是对的(改变)。失败的复制粘贴... – someguy 2010-08-29 12:44:30