我正在制作基于网格/磁贴的游戏。网格上的每个图块都具有x个位置,y位置和ID的一些属性。 ID根据占用磁贴的内容而变化。目前,有两种不同类型的建筑可以占据瓷砖,指挥中心或炮塔。如果我想删除一个建筑物,我需要从它的ArrayList中删除它:
ArrayList<CommandCenter> commandCenters = new ArrayList<>();
ArrayList<Turret> turrets = new ArrayList<>();
结构ID:
Command Center : 1
Turret : 2
...
如果给出ID,我如何选择要删除的ArrayList?例如(某些伪代码):
if (square(x, y).id == 1)commandCenters.remove(index);
if (square(x, y).id == 2)turrets.remove(index);
...
有没有办法减少这种麻烦或更有效率?
答案 0 :(得分:4)
让这两个类从Building
基类扩展。
class CommandCenter extends Building { }
class Turret extends Building { }
然后,您可以维护所有类型的建筑物列表。
List<Building> buildings = new ArrayList<>();