我正在制作一个每个级别都有不同机制的游戏,但我希望将所有输入处理,渲染等保存在一个地方。我的方法是让Level
类包含所有需要的方法,然后每个级别都是它自己的类Intro
,BossRoom
等)extends Level
并覆盖方法更改每个需要更改的部分,而不必复制每个类的Level
的所有内容。
我有一个LevelManager类,它将保存所有对级别的引用,我想使用ArrayList
来执行此操作。
我在尝试声明并实例化变量时,尝试使用ArrayList<Level>
,ArrayList<?>
,ArrayList<? extends Level>
和ArrayList<? instanceof Level>
。我尝试过的任何东西似乎都没有用。 Java是否有这样做,或者我应该将每个Level
作为变量?
对于文本块感到抱歉,我是SO的新手,并且不知道更好的说法。
答案 0 :(得分:1)
它应该是直的。这是一个小例子。
基类:
public abstract class Level{
....
}
编辑:您可以将Level
类声明为抽象,如果您认为它不应该(没有意义)或者它不能(至少有一种方法是抽象的)在您的实例化中应用。根据你的背景,很可能。
儿童班:
public class IntroLevel extends Level{
...
}
其他儿童班:
public class LevelOne extends Level{
...
}
您的关卡经理:
public class LevelManager{
private List<Level> levels;
// constructor
public LevelManager(){
levels = new ArrayList<Level>();
levels.add(new IntroLevel());
levels.add(new LevelOne());
...
}
}