我不知道我錯過了什麼...完整的代碼非常大,所以我只是把這個部分拋出異常在這裏。數組索引超出範圍
for (int i = 0; i < player.getBullets().size(); i++) { //for every player bullet
for (int j = 0; j < aliens.getAliens().size(); j++) { //for every player bullet every alien
player.getBullets().get(i);
aliens.getAliens().get(j);
if (player.getBullets().get(i).getBounds().intersects(aliens.getAliens().get(j).getBounds())){ //player bullet vs alien collison
if (aliens.getAliens().get(j).getType() == 1)
score += 2 + level;
else if(aliens.getAliens().get(j).getType() == 2)
score += 4 + level;
else
score += 8 + level*2;
aliens.getAliens().remove(j); // alien dies
player.getBullets().remove(i);
System.out.println("player bullet removed");
}
}
}
它放在//玩家子彈VS外來碰撞線引發了異常。 我加入了player.getBullets().get(i)
和getAliens()
來判斷哪一個拋出了異常,這是一個玩家。
錯誤似乎是隨機的,但我相信當外星人移動到子彈上時,它會超出界限。如果子彈直接擊中外星人,它可以正常工作。這可能是使用相交的錯誤嗎?
順便說一下,這是一個太空侵略者模仿。任何幫助,將不勝感激。
請張貼異常或至少告訴在哪一行它發生 – mort