2016-11-20 34 views
1

我正在做某種打磚塊,並且卡住了。我這樣做的方式是通過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... 
     } 
    }   

感謝您的幫助。

+0

,當你重複它 –

回答