この関数は、爆発がボックスに当たったかどうかをチェックし、最初のボックスでキャンセルする必要があります。Java - ループは実行されますが、ヘッダーは条件に合わない
たとえば、bsp.getBomb()。getStrength()は現在2です。ボックスがヒットするとi = 3ですが、条件が満たされなくてももう一度ループが実行されます。なぜですか?ループにbreak
を追加
public void detectBomb(BombSpritePair bsp) {
for(int i = 0; i <= bsp.getBomb().getStrength(); i++) {
if(bd.detect(bsp.getBomb().getX(), bsp.getBomb().getY()+i)) {
Sprite sprite = new Sprite(new Texture("gras.png"));
sprite.setPosition(bsp.getBomb().getX()*16, (bsp.getBomb().getY()+i)*16);
// i = bsp.getBomb().getStrength()+1;
sprites.add(sprite);
System.out.println("RIP"+i);
System.out.println(bsp.getBomb().getStrength());
break;
}
}
}
正しい '<'の代わりに '<='を使用しているためです。 – Kayaman
これは問題ではありません... 3 <= 2は動作しません – Joey
は 'bsp.getBomb()。getStrength()'定数です。ループの実行中にループ境界を変更することは、しばしば悪いことです。 ** Plus **では、ループの本体内で 'i'を変更しています。また良いことではありません! – cxw