1

从我的应用程序(游戏)的每个级别调用以下内容

伪代码示例

public void checkCollisions(){

    if (someCondition)
        do something

    else if (someCondition2)
        do something2

    else if (someCondition3)
        do something3

}

它是这样称呼的:

mainGame.checkCollisions();

但是,在选定的关卡中,我需要添加一个额外的条件,所以不要像....那样复制整个方法。

 public void checkCollisions2(){

    if (someCondition)
        do something

    else if (someCondition2)
        do something2

    else if (someCondition3)
        do something3

    else if (someCondition4)
        do something4

}

然后称它为.......

mainGame.checkCollisions2();

我需要找到一种更有效地做到这一点的方法(我相信有一个)我能想到的唯一方法是接受一个布尔值,然后根据值的值执行第四个条件(或不执行)布尔值是,但这似乎也不是一个好方法(例如,如果我想在将来添加更多条件)。

这必须是一个“else if”语句,所以我不能只是将它变成一个单独的方法,我可以在原始方法之外调用它。

选项将不胜感激

4

1 回答 1

4

checkCollisions返回一个boolean表明它是否“做了某事”的返回值。

public boolean checkCollisions(){
    boolean didSomething = false;
    if (someCondition) {
       doSomething();
       didSomething = true;
    }
    else if (condition2) {
       doSomething2();
       didSomething = true;
    } 
    else if (condition3){
       doSomething3();
       didSomething = true;
    }
    return didSomething;
}

然后,checkCollisions2可以调用checkCollisions并检查它是否做了什么。然后你else if就可以正常工作了:

public void checkCollisions2(){
    if (checkCollisions()) {
       // Yes, something was done!
    }
    else if (condition4) {
       doSomething4();
    }
}

或更短:

public void checkCollisions2(){
    if (!checkCollisions() && condition4) {
       doSomething4();
    }
}
于 2013-09-03T18:10:23.493 回答