我正在用Java创建一个涉及怪物的2D游戏。我想知道在实例化之后让一个Monster类的数据由外部文本文件填充是否更有意义(这样我可以很容易地添加更多的怪物),或者更确切地说,拥有一个Monster super更有意义类,然后有子类扩展说Monster类?
左侧外部,右侧内侧
如果所有的怪物做同样的事情,那么我明白为什么从外部数据创建怪物会有益,但这会限制我在游戏的其他部分吗?
我无法在其他任何地方找到这个问题......在计划如何编写游戏时似乎是一种常见的情况。
答案 0 :(得分:3)
我认为使用单个类并从文件中包含的数据生成不同的怪物实例要好得多。
你为什么害怕这会限制你?您始终可以扩展生成怪物的数据,并描述您需要的所有属性和行为。
相反,如果你有一个类,你将会在游戏中拥有一个可能的怪物,那么你将拥有大量的课程,其最终结果是乱丢你的代码库而不会获得任何好处。 / p>
Eric Lippert有series of blog posts,他在那里讨论非常相似的设计决策。你可能会发现它很有趣。
答案 1 :(得分:1)
IMO你应该制作一个抽象类怪物,然后将与你需要的任何其他课程一起扩展。
public abstract class Monster() {}
public class Predator extends Monster() {}
public class Alien extends Monster() {}
在https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
了解详情