2016-07-22 61 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