【发布时间】:2015-07-18 12:36:06
【问题描述】:
我正在尝试为我的游戏提出一个好的设计。我目前正在测试一个数据驱动的项目系统,我希望这个系统非常灵活。
- 我的武器需要某种类型的弹药。
- 我有弹药类型的实际弹药。
如果玩家想开火,我需要查看它的库存中是否有正确的弹药类型。对于需要引用弹药类型的实际弹药也是如此。当玩家捡起它已经拥有的弹药时,应该相互添加。
我目前正在考虑的是一个弹药类型的类,它有一个“短”字符串供参考,因为字符串在 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.] //..
但是对于每种类型,我都可以拥有一个界面并创建功能。我可以通过比较类来轻松比较弹药的类型。
如果我使用简写字符串的引用,我不必创建所有类、接口和工厂,但必须在长语句中设置弹药规则。从长远来看,事情可能会变得一团糟。
对此或其他“更好”的方法有什么想法吗?
【问题讨论】: