我的任务是在Greenfoot中创建Java游戏。我想收集5个硬币,出现一个门,进入该门,进入下一个级别。到目前为止,我已经做到了。我认为此if / else语句存在问题:

if (coinsCollected == 5 && levelCounter == 0) {
    getWorld().addObject(new door_temp(), 157, 162);
    levelCounter += 1;
    coinsCollected = 0;
    secondLevel();
}

if (coinsCollected == 5 && levelCounter == 1) {
    getWorld().addObject(new door_temp(), 961, 170);
    levelCounter += 1;
    coinsCollected = 0;
    thirdLevel();
}


由于某些原因,即使我在2级并且碰到门,第一个语句也会被执行。我不明白为什么会这样,因为我每次都会将levelCounter加1。

感谢任何可以提供帮助的人;)

最佳答案

您的语句实际上不是if / else,因此按您的说法,当您在0级触摸门时,它将执行两个部分(假设secondLevel()返回)。

我怀疑问题是在级别1的世界类中将levelCounter声明为实例变量,但是当您移至级别2时,该世界类的实例变量再次为0。但这取决于您如何实现级别以及以上代码位于哪个类中。需要更多代码才能确定问题所在。

10-05 17:55