我的Java代码不会产生下一波?
所以我在做一个有一波敌人的游戏。Wave类包含一个更新方法,该方法更新Wave类中包含的敌人数组列表中的所有敌人。Wave类还有一个名为beat的布尔值,它决定玩家是否击败了当前Wave。不过,我现在一直在尝试在球员击败第一名球员后开始下一波比赛。arraylist中的所有波开始时,除第一个波外,其节拍变量均为true。目前只有两波。我不知道这为什么不起作用。谢谢你的帮助我的Java代码不会产生下一波?,java,loops,arraylist,Java,Loops,Arraylist,所以我在做一个有一波敌人的游戏。Wave类包含一个更新方法,该方法更新Wave类中包含的敌人数组列表中的所有敌人。Wave类还有一个名为beat的布尔值,它决定玩家是否击败了当前Wave。不过,我现在一直在尝试在球员击败第一名球员后开始下一波比赛。arraylist中的所有波开始时,除第一个波外,其节拍变量均为true。目前只有两波。我不知道这为什么不起作用。谢谢你的帮助 for(int i = 0; i < 1;i++) { if(!w.get(i).be
for(int i = 0; i < 1;i++)
{
if(!w.get(i).beat)
w.get(i).update(g2d);
else if(w.get(i).beat)
{
if(i-1 != -1)
{
if(w.get(i-1).beat && w.get(i).beat)
{
w.get(i).beat = false;
}
}
}
}
我不确定我是否理解你的代码,但我可以告诉你两件事。首先,您的循环从不循环,因为一旦索引为1,它就结束,而不会再次执行代码。其次
if(i-1 != -1)
{
if(w.get(i-1).beat && w.get(i).beat)
{
w.get(i).beat = false;
}
}
由于我所说的,始终为false。在将当前波形的节拍设置设置为false后,您的循环将在下一个波形中增加I,并且错过调用该情况下的更新方法。看起来您应该在设置beat=false后立即调用其update方法,或者按照如下相反的顺序执行if测试:
for(int i = 0; i < numWaves;i++) // upper range should be the number of waves
{
if(w.get(i).beat)
{
if(i>0) // this can be simplified to "if (i>0)"
{
if(w.get(i-1).beat) // no need to check w.get(i).beat here
{
w.get(i).beat = false;
}
}
}
else
w.get(i).update(g2d);
}
我不知道为什么你会将一个波的拍状态初始化为true,然后在轮到它时将其设置为false。为什么不将all初始化为false,因为它们确实还没有被击败?谢谢您的帮助。事实证明,实际问题是我在wave类的更新方法中处理beat的方式。我确实使用了你的建议,将节拍初始化为false,只需要有一个字段来判断波是否是第一个。