java - 使用 Point2D 中的距离将变量与数组进行比较

标签 java arrays loops boolean

我的目标是如果门在附近则返回 true(门是游戏对象的子类,allObjectsInWorld 是一个 ArrayList,其中包含世界上的所有游戏对象,包括这扇门) 当我靠近门时我返回 false。 如果对象是门,则 get isdoor 返回 true

GameObject.position是一个Point2D点

public boolean isDoorNear(GameObject user) {
    boolean tempBoo = false;
    for(int i = 0; i < allObjectsInWorld.size();i++) {
        GameObject a = (GameObject) allObjectsInWorld.get(i);  //checks to see if something is there
        if( user.position.distance(a.position) <= 2.0 && a.isDoor) {
            tempBoo = true;
        }
        else {
            tempBoo = false;
        }
    }
    return tempBoo; 
}

最佳答案

tempBoo = false 行很糟糕:即使之前检测到某些门,它也会将返回值更改为 true。只需依靠初始化来提供默认返回 false ,除非附近有任何门。

但是你可以通过提前返回来完全避免所有 tempBoo 的事情:

public boolean isDoorNear(GameObject user) {
    for(int i = 0; i < allObjectsInWorld.size();i++) {
        GameObject a = (GameObject) allObjectsInWorld.get(i);
        if( user.position.distance(a.position) <= 2.0 && a.isDoor)
            return true;
    }
    return false;
}

关于java - 使用 Point2D 中的距离将变量与数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006177/

相关文章:

java - 从内部类访问外部类 : Why is it done this way?

java - 如何在java中一次性替换两个字符串

vb.net - 使用循环或 If 语句在 vb.net 中获得结果 'Win, Lose, Draw' 的“剪刀石头布”逻辑

python - 在 Python 中设置分区

php - 如何使用 PHP 在目录中找到前 5 个文件?

php - 如何获取沿圆周的像素

c++ - 循环在 C++ 中再次开始

字符串的 Java 正则表达式模式

java - Java 输入字符串的 NumberFormatException

java - 在数组中查找最小值和最大值的更快方法