Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维阵列跟踪玩家在实体周围特定空间的移动_Java_Arrays_If Statement - Fatal编程技术网

Java 二维阵列跟踪玩家在实体周围特定空间的移动

Java 二维阵列跟踪玩家在实体周围特定空间的移动,java,arrays,if-statement,Java,Arrays,If Statement,好的,我需要一个数组的帮助,我有一个2D数组,玩家可以在其中移动,此时我随机生成一个实体,玩家应该能够与它交互。我有一个相当长的if语句,它跟踪玩家是否接近实体,但是无法在触发提示时增加范围。这个if语句很长,有时让我感到沮丧,但如下所示: if(((getPlayerX() == getEntityX() - getPlayerRange()) || (getPlayerX() == getEntityX() + getPlayerRange()) || (getPlayerX() == ge

好的,我需要一个数组的帮助,我有一个2D数组,玩家可以在其中移动,此时我随机生成一个实体,玩家应该能够与它交互。我有一个相当长的if语句,它跟踪玩家是否接近实体,但是无法在触发提示时增加范围。这个if语句很长,有时让我感到沮丧,但如下所示:

if(((getPlayerX() == getEntityX() - getPlayerRange()) || (getPlayerX() == getEntityX() + getPlayerRange()) || (getPlayerX() == getEntityX())) && ((getPlayerY() == getEntityY() - getPlayerRange()) || (getPlayerY() == getEntityY() + getPlayerRange()) || (getPlayerY() == getEntityY()))){

但是,当范围增加到2时(默认值为1),这将不再有效。我想实现这一点,这样更大范围的玩家仍然可以与这个实体进行交互。有没有一种更简单、更有效的方法呢?

像这样的方法怎么样:

int xDistance = Math.abs(getPlayerX() - getEntityX());
int yDistance = Math.abs(getPlayerY() - getEntityY());

if (xDistance <= getPlayerRange() && yDistance <= getPlayerRange()){ ... }
int-xDistance=Math.abs(getPlayerX()-getEntityX());
int-yDistance=Math.abs(getPlayerY()-getEntityY());

如果(xDistance)是的,这工作很好,谢谢一个老兄,已经在这上面停留了一段时间,很抱歉反应太晚,只是刚刚实现了它