我正在开发一个基于 2D 网格的模拟游戏。进步是好的。最近几天一直在很好地破解代码,今天我遇到了一些问题。
我建了两个房间,设置了门的位置,然后生成了一个人。此人有 2 种房间类型,他们必须访问才能治愈(这是主题医院的翻版)。我单击生成按钮,人物从屏幕外移到网格上,然后当生成完成时,他们将获得通往第一个房间的第一条路径,然后是第二条路径,然后返回到结束生成点。
当我说生成点时,我指的是屏幕外/网格外的点,当我说结束生成点时,我指的是当生成周期完成时人所在的点,并且他们完全在屏幕/网格上。
现在问题来了,“人”(它本身就是一个对象)怎么办?我是否应该简单地设置一个布尔值,以便它们不再“活动”但它们的数据仍然存在?我不确定,所以我试图将它们从他们所持有的人员对象的 ArrayList 中删除。
我通过在创建时为每个人分配一个与他们在 ArrayList 中的新位置相同的数字值来做到这一点,然后在删除它们时使用该数字。我知道这本身就是一个问题,但我现在只测试 1 个人。如果有人可以在这方面给我一些帮助,那就太好了!但我想这更像是一个子问题。
当这个人要被删除时,他们是,我检查了数组列表的大小,然后我得到以下错误......“线程中的异常“AWT-EventQueue-0”java.util.ConcurrentModificationException”
我做了一些研究,我知道这与不同线程中的对象同步有关,但我不确定我有多个线程。我确实有一个计时器,而且我认为不会在其他地方访问 people ArrayList。
有什么想法吗?想法?建议?对此有何评论?
提前致谢!
(我将很快发布一个视频并用一个链接更新这个问题)