2つのArrayListを反復しようとしています:それらのうちの1つ「gegner」は敵についてのリストであり、もう1つは「waende」という壁です。2次元配列のように2つのArrayListを反復する
壁と敵の接触があるときは、どちらも耐久性/健康を失うはずです。 同時に動作しなかったので、リストから死のオブジェクトを削除する新しい方法を作成しました。
私の考えでした:
public void removeDeathObjects() {
Wand tempW;
Gegner tempG;
for (Iterator<Gegner> it = gegner.iterator(); it.hasNext();) {
tempG = it.next();
for (Iterator<Wand> it2 = waende.iterator(); it2.hasNext();) {
tempW = it2.next();
if(tempW.isDestroyed()){
it2.remove();
}
if (tempG.isDeath()){
it.remove();
}
}
}
}
しかし、プログラムは、すぐに、少なくとも二つの壁があるとして「ラインit.remove()
java.lang.IllegalStateExceptionで 『AWT-EventQueueの-0』スレッドで例外を」スロー、enimiesは完全に殺されません。
どこで失敗しましたか?
あなたが望むなら、私はあなたにコード全体を与えることができましたが、かなり長いです。
PS:悪い英語のため申し訳ありません
2つのループがネストされている理由はありません。 'gegner.removeIf(g-> g.isDeath())'のようなものは欲しくないのですか? –