#java #arrays #if-statement
#java #массивы #if-оператор
Вопрос:
Хорошо, итак, мне нужна помощь с массивом, у меня есть 2D массив, по которому игрок может перемещаться, на данный момент я случайным образом генерирую объект, и игрок должен иметь возможность взаимодействовать с ним. У меня есть один прилично длинный оператор if, который отслеживает, приближается ли игрок к объекту, однако не может увеличить диапазон, что вызовет запрос. Это утверждение if длинное и временами меня расстраивало, но заключается в следующем;
if(((getPlayerX() == getEntityX() - getPlayerRange()) || (getPlayerX() == getEntityX() getPlayerRange()) || (getPlayerX() == getEntityX())) amp;amp; ((getPlayerY() == getEntityY() - getPlayerRange()) || (getPlayerY() == getEntityY() getPlayerRange()) || (getPlayerY() == getEntityY()))){
Однако, когда диапазон увеличивается до двух (по умолчанию — один), это больше не работает. Я хочу реализовать это так, чтобы игрок с более высоким диапазоном все еще мог взаимодействовать с этим объектом. Есть ли более простой способ сделать это, который мог бы быть более эффективным?
Ответ №1:
Как насчет чего-то подобного:
int xDistance = Math.abs(getPlayerX() - getEntityX());
int yDistance = Math.abs(getPlayerY() - getEntityY());
if (xDistance <= getPlayerRange() amp;amp; yDistance <= getPlayerRange()){ ... }
Вычислите абсолютное расстояние, а затем сравните с диапазоном игрока.
Даже если это больше кода, чем ваша текущая версия, на мой взгляд, он более удобочитаем даже для диапазона 1.
Комментарии:
1. Да, это работает хорошо, спасибо, чувак, застрял на этом некоторое время, извините за поздний ответ, только что его реализовал