作成した for ループに問題があるようです。
for (Rectangle rect : Wall.wallRects){
if(rect.intersects(Ball.ball)){
System.out.println("Collied");
}
}
これにより、次のエラーがスローされます。
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.thejacksullivan.breakout.Collison.checkCollison(Collison.java:14)
at com.thejacksullivan.breakout.Ball.moveBall(Ball.java:23)
at com.thejacksullivan.breakout.Core.main(Core.java:48)
次から呼び出されます。
public class Ball {
public static Rectangle ball;
public static int x = 250;
public static int y = 200;
public static int dx = 4;
public static int dy = 4;
public static int dia = 30;
public static void moveBall(){
ball = new Rectangle(x, y, 15, 15);
if(x + dx < 0 || x + dia + dx > Core.frame.getWidth()){
dx *= -1;
}
if(y + dy < 0 || y + dia + dy > Core.frame.getHeight()) {
dy *= -1;
}
Collison.checkCollison();
x += dx;
y += dy;
}
}
これを修正する方法が正確にはわかりません。同様のプログラムで同じタイプの衝突チェックを使用しましたが、どんな助けでも大歓迎です。
ああ、エラー行は次のとおりです。
for (Rectangle rect : Wall.wallRects){
Collison.checkCollison();
Ball.moveBall();
(Collision という単語のスペルが間違っていることに気付きました。おっと:D)
さらに情報が必要な場合はお知らせください。
更新: Collison.checkCollsion() を paint() メソッドに移動しました。paint メソッドで rects を Wall.rects に追加したため、正しく機能していなかったと思います。それがエラーの原因でした。助けてくれてありがとう。