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

时间:2014-02-25 06:19:33

标签: java arrays loops boolean

我的目标是在门附近时返回true(门是游戏对象的子类,而allObjectsInWorld是包含世界上所有游戏对象的ArrayList,包括此门) 当我靠近门时,我会回复假。 如果对象是门,则get is door返回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; 
}

1 个答案:

答案 0 :(得分:1)

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;
}