我正在做某種打磚塊,並且卡住了。我這樣做的方式是通過JFrame,JPanel和Timer。所以,我做什麼,每個定時器更新 這遊戲檢查碰撞和從ArrayList中刪除對象
public class Controller implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
ball.move();
desk.move();
deskCollision();
squareCollision();
repaint();
}
}
我創造了廣場的ArrayList,我打印了出來。當我檢查與正方形和球的碰撞時,它會起作用。所以現在我想刪除一個特定的方塊,當一個球擊中它並改變球的方向時。首先,我嘗試了這種方式,沒有任何形式的循環。
if(ListOfSquares.get(24).getBounds2D().intersects(ball.getBounds2D())){
ball.dy = 1;
ball.dx = -1;
ListOfSquares.remove(24);
}
這也適用。但是,因爲我想製作一個循環,它會遍歷所有的方格,並且總是刪除特定的方格,所以我迷了路。我已經做了這個樣子,但 它的錯誤結束了 - 在線程「AWT-EventQueue的 - 0」 java.util.ConcurrentModificationException例外 -
for(Square square : ListOfSquares){
int index = ListOfSquares.indexOf(square);
if (ball.getBounds2D().intersects(square.getBounds2D())) {
if(ball.dx == -1 && ball.dy == -1){
ball.dy = 1;
ball.dx = -1;
ListOfSquares.remove(index);
}
//etc...
}
}
感謝您的幫助。
,當你重複它 –