RangeCheck с положительными и отрицательными числами
Я работаю над небольшой игрой, в которой есть график. Идея в том, чтобы я выполнял действие, пока целевое местоположение (обозначенное верхней и нижней границами) не было выполнено (в пределах 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))
1 ответ
цикл должен остановиться, когда x и y (оба в этом случае) находятся между 6,5 и 7,5.
while (!(x >= 6.5 && x <= 7.5 && y >= 6.5 && y <= 7.5)) {
...
}
Применяя закон де Моргана, вышесказанное эквивалентно
while (x < 6.5 || x > 7.5 || y < 6.5 || y > 7.5) {
...
}