2016-07-22 31 views
0

我正在用Java创建一个涉及怪物的2D游戏。我想知道是否有更多的意义,有一个怪物类有其数据填充外部文本文件后实例化(这样我可以轻松地添加更多的怪物),或者更确切地说,有一个怪物超级更有意义类,然后有扩展说Monster类的子类?在Java中存储数据内部对外部

外部左键,内部右键

External on Left, Internal on Right

如果所有的怪物做同样的事情,那么我明白为什么只是创造外部数据的怪物将是有益的,但会是极限我在游戏的其他部分?

我在其他地方找不到这个问题......在计划如何编写游戏代码时,这似乎是一种常见的情况。

回答

3

我认为使用一个类以及从文件中包含的数据不同的怪物如要好得多。

你为什么害怕这会限制你?您始终可以将生成怪物的数据扩展并描述所需的所有属性和行为。相反,如果你在游戏中拥有每一个可能的怪兽的职业,那么你将拥有大量的类,结果抛弃了你的代码库而没有得到任何好处。

Eric Lippert有一个series of blog posts他讨论了非常相似的设计决定。你可能会觉得它很有趣。

+0

是的,我认为这也是更好的选择。它避免了许多类似的类,并允许轻松更改这些值,而无需重新编译程序。 – puhlen

+0

该链接似乎很有用,所以谢谢。我想我很担心如果怪物在与其他物体进行交互时没有在游戏中预定义,我可能会遇到空指针异常,但正如您所指出的,我可以扩展从怪物生成的数据... 非常有用的见解。谢谢! – tsmetska

1

国际海事组织你应该做一个抽象类的怪物,这将随后与任何其他类,你需要扩展。

public abstract class Monster() {} 

public class Predator extends Monster() {} 
public class Alien extends Monster() {} 

多见于https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

+0

我更喜欢这个。当然,你可能会得到更多的代码行,但对我而言,它更加有组织,并且允许人们简单地扩展你的Monster类来创建自己的代码。 – Dominic