2d массив отслеживает перемещение игрока в определенные пространства вокруг объекта

#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. Да, это работает хорошо, спасибо, чувак, застрял на этом некоторое время, извините за поздний ответ, только что его реализовал