I want to add new Enemy but there's a ConcurrentModificationException. 'enemies' is an ArrayList<Enemy>
that has 2 Enemy object, and 'enemy' is an ArrayList<Enemy>
that has Enemies appeared on the screen.
I have made classes before, so I tried changing objects, but they didn't work. How can I add enemy and sort a list?
public EnemiesManager() {
random = new Random();
enemies = new ArrayList<Enemy>();
enemy = new ArrayList<Enemy>();
cactus1 = new Cactus();
cactus2 = new Cactus2();
dinosaur = new Dinosaur();
enemies.add(cactus1);
enemies.add(cactus2);
r = random.nextInt(2);
enemy.add(enemies.get(r));
}
public Rectangle getBound() {
rect = new Rectangle();
for (Enemy e : enemy) {
rect.x = e.getPosX();
rect.y = e.getPosY();
rect.width = e.getFrame().getWidth();
rect.height = e.getFrame().getHeight();
}
return rect;
}
public void draw(Graphics g) {
for (Enemy e : enemy) {
e.draw(g);
}
}
public void update() {
for (Enemy e : enemy) {
if(enemy.size()<=5) {
int finalTerm = e.getPosX() + 100 + term.nextInt(600);
r = random.nextInt(2);
nextEnemy = enemies.get(r);
nextEnemy.setPosX(finalTerm);
enemy.add(nextEnemy);
}
e.update();
}
if (enemy.get(0).getPosX() + enemy.get(0).getFrame().getWidth() < 0) {
enemy.remove(0);
}
}
public boolean isCollision() {
for (Enemy e : enemy) {
if (dinosaur.getBound().intersects(e.getBound())) {
return true;
}
}
return false;
}