我正在制作战略游戏AI。具体来说,我正在使用BWMirror Java库制作Starcraft:BroodWar虫族AI。
我遇到了单位管理方面的问题。播放器中有一些单位,可以这么说List<Unit>
:
Offset Name Position
0. Drone [Worker]
1. Drone [Worker]
2. Zergling [Fighter]
3. Hatchery [Building]
4. Drone [Worker]
5. Larva [Passive]
有些功能显然仅适用于单位子集。我实现了一种从主列表中选择子集并将其作为新列表返回的方法。对于工人,我会得到:
Offset Name Position
0. Drone [Worker]
1. Drone [Worker]
2. Drone [Worker]
现在,如果将其中一个工作程序从原始列表中删除(例如,由于其死亡),它将保留在此子列表中。有2种可能的解决方案,我都不喜欢:
我的问题是:是否有任何类型的数据存储可以让我进行子选择,但让我保持数据同步?
这意味着我将有两个Iterable
对象,一个将包含所有单元,另一个将包含worker。从所有部门中删除工作人员也将使其从工作人员中消失,而无需任何回调。
我认为您只有列出的2个选项,在这两个选项中,我认为第一个选项最有意义。
仅在需要时才懒惰地生成列表,这样可以节省很多时间。一位拥挤的海军陆战队员(例如您自己)可能会杀死大量的小虫,您真的不希望为每只死亡的小虫发送消息。最好在需要时只看剩下的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句