我正在用java制作基本游戏。在游戏中,你是一个街区,通过使用按键(上,下等),你应该射击敌人。这也是一个块。我有两个对象之间的工作碰撞,它的工作原理。但是,当子弹击中敌人时,它应该消失。当所有的敌人都“被杀死”时,你就赢了。这基本上是我迄今为止得到的。碰撞时从ArrayList中移除对象
ArrayList<Enemy> enemy;
ArrayList<Bullet> bullets;
[...]
public void collision(){
for(Bullet b : bullets){
Rectangle r1 = b.getBounds();
for(Enemy e : enemy){
Rectangle r2 = e.getBounds();
if(r1.intersects(r2)){
enemy.remove(e);
}
}
}
的敌人是由一个.txt
else if(mark == 'E'){
enemies.add(new Enemy(x * 20 + 10, y * 20 + 35, 40));
}
所以催生当你打敌人子弹我在for(Enemy e : enemy){
得到java.util.ConcurrentModificationException首先但是如果我打敌人按照特定的顺序我可以删除除1个敌人以外的所有敌人。然后发生错误。碰撞方法被放置在“gameloop”中。
快速哈克:'列表 enemy = new CopyOnWriteArrayList ();' –
downvoted因为您没有(完全)读取'ConcurrentModificationException'的文档。 –