对于基于图块的游戏,我需要根据给定的点偏移(两点之间的差异)计算方向。例如,假设我站在点 (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;
}
}
}
当然,它可以优化或缩短。有什么帮助吗?谢谢。