私は2Dグリッドベースのシムゲームを開発しています。進捗は良好です。過去数日間、コードを非常にうまく解読してきましたが、今日はいくつかの問題が発生しています。
部屋を2つ作り、ドアの位置を設定して、人をスポーンします。その人は、治癒するために訪問しなければならない2つの部屋タイプを持っています(これはテーマホスピタルのリメイクです)。スポーンボタンをクリックすると、Personは画面外からグリッドに移動し、スポーンが終了すると、最初の部屋への最初のパス、次に2番目のパス、そして最後のスポーンポイントに戻ります。
スポーンポイントとは、画面外/グリッド外のポイントを意味し、スポーン終了ポイントとは、スポーンサイクルが終了したときに人がいるポイントを意味し、完全に画面/グリッド上にあります。
問題は、「人」(それ自体がオブジェクトである)をどうするかということです。ブール値を単純に設定して、「アクティブ」ではなく、データが残るようにする必要がありますか?よくわからなかったので、保持されていた人々のオブジェクトのArrayListからそれらを削除しようとしました。
これを行うには、作成時に各人にArrayListの新しい位置と同じ数値を割り当て、削除するときにその番号を使用します。それ自体が床になっていることは知っていますが、現在テストしているのは1人だけです。誰かが私にそれについていくつかの助けを与えることができれば、素晴らしいです!しかし、それはもっとサブな質問だと思います。
その人が削除されるとき、彼らは削除され、配列リストのサイズを確認すると、次のエラーが発生します...「スレッド「AWT-EventQueue-0」の例外java.util.ConcurrentModificationException」
調査を行ったところ、これは異なるスレッドのオブジェクトの同期に関係していることは理解していますが、複数のスレッドがあるかどうかはわかりません。私はタイマーを1つ持っていますが、他の場所でArrayListにアクセスすることはないと思います。
何かご意見は?アイデア?提案?これについてのコメント?
前もって感謝します!
(私はすぐにビデオを投稿し、それへのリンクでこの質問を更新します)