我正在编写一个太空侵略者游戏,我需要编写5个公共实例变量,这些变量包含用于收集有关一次游戏运行的所有信息的集合:
spaceShips将按它们在屏幕上出现的顺序引用一个SpaceShip列表。
公共列表空间
眨眼即是镜头,这些镜头将按照发生的顺序引用所有Blink实例的列表
公共列表闪烁;
hitsMap,它将引用地图,谁的键将是被眨眼命中的太空飞船的实例,其值将是对应于“成功的”眨眼实例的列表
????
毫发无损,它将引用所有眨眼未“命中”的SpaceShip实例的列表
???
未命中,它将引用未“击中”任何太空飞船的所有Blink实例的列表
???
然后,我必须向构造函数中添加行,以将HashMap的新实例分配给hits map,并将ArrayList分配给其他变量,到目前为止,我已经
spaceShips = new ArrayList();
闪烁=新的ArrayList();
任何帮助都会很棒
干杯
最佳答案
在Java 5及更高版本中,您可以使用泛型使您的生活稍微简单一些。使用以下定义:
public List<SpaceShip> spaceShips = new ArrayList<SpaceShip>();
public List<Blink> blinks ...;
public Map<SpaceShip, List<Blink>> hitsMap = new HashMap<SpaceShip, List<Blink>>();
public List<SpaceShip> unscathed ...;
public List<Blink> misses ...;
要添加匹配,请使用以下代码:
public void addHit(SpaceShip ship, Blink blink) {
List<Blink> hits = hitsMap.get(spaceShip);
if(null == hits) {
hits = new ArrayList<Blank>();
hitsMap.put(spaceShip, hits);
}
hits.add(blink);
}
也就是说,我建议使用一个稍微不同的API:在
SpaceShip
中添加一个“命中”列表,在hit
中添加一个布尔字段Blink
(或者可能是对它确实命中的太空飞船的引用)。这样,相关信息将位于受影响的对象实例中,您可以在spaceShips
或blinks
列表上使用简单的过滤器来获取其他三个列表/映射。请注意您的命名。 “眨眼”不应该是“导弹”还是“射击”?