我正试图为我的游戏设计一个好的设计。我目前正在测试一个数据驱动的项目系统,我希望这个系统非常灵活。
如果玩家想发射武器,我需要查找,如果它有正确的弹药类型,它的库存。同样的情况下,实际的弹药,需要保持一个参考类型的弹药。当玩家拿起弹药,它已经有了,它应该被添加到对方。
我目前考虑的是一个弹药类型的类,它有一个“短”字符串作为参考,因为字符串在Json文件中更易读。这个类也有弹药的信息,像一个正确的名字和一些额外的信息。最后,我创建了一个清单来保存不同类型的弹药。
然后,当我创建实际的弹药(项目)时,我将从我从文件中生成的弹药类型列表中选择一个类型。这个弹药项目有它的数量。我可能会在这里使用一个接口和一个工厂,当弹药被击中时,不同类型的弹药(爆炸,穿孔,轻弹药都有不同的表现)。
然后,当一个武器想开火,我检查相应的弹药是否在玩家的库存中,通过查找“短”字符串。
我在想我是不是走对了路。我怀疑我的参考系统使用“短”字串的弹药类型。如果我创建我的弹药类型的工厂,我可以检查我的武器射击方法,如果有这类类型的弹药,我只会使用工厂中的短手弦来创建各种对象。
如果我想使用一个工厂和去OOP,我需要很多的类。
[Ammo]
[Bullet]
[762mm] //I know this is not a valid class name, have to come up with something.
[5.56mm]
[Etc.] //Plenty more to come thanks to data driven
[Rocket]
[Tornado]
[Etc.] //Plenty more
[Grenade] //Launcher
[Etc.]
[Etc.] //..但是对于每种类型,我可以有一个接口并创建功能。我可以通过比较类来比较弹药的类型。
如果我使用引用的短手字符串,我不需要创建所有的类,接口和工厂,但必须在一个长语句中设置弹药规则。从长远来看,事情可能会变得一团糟。
对于这种或另一种“更好”的方法有什么想法吗?
发布于 2015-07-18 13:11:39
我建议不要采用有区别的OOP方法,原因如下:
你说弹药和武器将通过数据驱动的设计来制造。这是很好的,但如果你需要一个新的子类为每种类型的弹药,你仍然需要实际实现新的类。这是为弹药准备的。在游戏中很容易获得新弹药.
弹药进入什么地方需要枪的逻辑。您可以在OOP中这样做,但也可以在通用数据表(数据驱动)中保存所有相关信息!给你!)。您的代码将只实现一般规则,而不是子弹类型与枪支等的实际关系。这将存储在数据库中。您的代码保持不变,但行为是数据驱动的..。当然,您的测试现在需要处理来自数据库的数据。
如果您的对象确实遵循这个相当僵化的模型,那么OOP就很好了。我真的不是弹药方面的专家,所以我可能错了,但难道不可能想到弹药实体有几个父类的特征吗?这种关系很难在面向对象程序设计中建模。这是JAVA的一个缺点,因为您不能从多个父母那里继承。相反,您应该查看对象组合。
我认为,你从人类可读的标识符中提取短字符串的想法是可以接受的。这些也应该来自您的数据,不应该硬编码。
https://stackoverflow.com/questions/31491237
复制相似问题