我正在开发一款有图表的小游戏。我的想法是我做了一个动作,而目标位置(由上限和下限指定)没有达到(在0.5之内)。例如,如果我定位(7,7),当x和y(在这种情况下都是)在6.5和7.5之间时,循环应该停止。
然而,当出现负数时,出现以下情况时会出现问题:
while ((X < tarX-0.5 || X > tarX+0.5) && (Y < tarY-0.5 || Y > tarY+0.5))
例如:如果我有目标(-7,-7),那么当一个x或y值在范围内时,循环将停止,而不是两者。
基本上,根据x或y是否为正,我有了四个不同循环的想法。但我想知道是否有更简单的方法? (我确实尝试使用Math.abs()来抵消负数,这些数字起作用但是(-3,-3)的某些东西仍然可以停在(3,3)处。
答案 0 :(得分:0)
当x和y(在这种情况下都是)在6.5和7.5之间时,循环应该停止。
while (!(x >= 6.5 && x <= 7.5 && y >= 6.5 && y <= 7.5)) {
...
}
应用De Morgan's Law,上述内容相当于
while (x < 6.5 || x > 7.5 || y < 6.5 || y > 7.5) {
...
}