首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据驱动设计,引用数据

数据驱动设计,引用数据
EN

Stack Overflow用户
提问于 2015-07-18 12:36:06
回答 1查看 346关注 0票数 0

我正试图为我的游戏设计一个好的设计。我目前正在测试一个数据驱动的项目系统,我希望这个系统非常灵活。

  • 我有一件需要某种弹药的武器。
  • 我有弹药类型的实际弹药。

如果玩家想发射武器,我需要查找,如果它有正确的弹药类型,它的库存。同样的情况下,实际的弹药,需要保持一个参考类型的弹药。当玩家拿起弹药,它已经有了,它应该被添加到对方。

我目前考虑的是一个弹药类型的类,它有一个“短”字符串作为参考,因为字符串在Json文件中更易读。这个类也有弹药的信息,像一个正确的名字和一些额外的信息。最后,我创建了一个清单来保存不同类型的弹药。

然后,当我创建实际的弹药(项目)时,我将从我从文件中生成的弹药类型列表中选择一个类型。这个弹药项目有它的数量。我可能会在这里使用一个接口和一个工厂,当弹药被击中时,不同类型的弹药(爆炸,穿孔,轻弹药都有不同的表现)。

然后,当一个武器想开火,我检查相应的弹药是否在玩家的库存中,通过查找“短”字符串。

我在想我是不是走对了路。我怀疑我的参考系统使用“短”字串的弹药类型。如果我创建我的弹药类型的工厂,我可以检查我的武器射击方法,如果有这类类型的弹药,我只会使用工厂中的短手弦来创建各种对象。

如果我想使用一个工厂和去OOP,我需要很多的类。

代码语言:javascript
复制
[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.] //..

但是对于每种类型,我可以有一个接口并创建功能。我可以通过比较类来比较弹药的类型。

如果我使用引用的短手字符串,我不需要创建所有的类,接口和工厂,但必须在一个长语句中设置弹药规则。从长远来看,事情可能会变得一团糟。

对于这种或另一种“更好”的方法有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-18 13:11:39

我建议不要采用有区别的OOP方法,原因如下:

  • 数据驱动

你说弹药和武器将通过数据驱动的设计来制造。这是很好的,但如果你需要一个新的子类为每种类型的弹药,你仍然需要实际实现新的类。这是为弹药准备的。在游戏中很容易获得新弹药.

弹药进入什么地方需要枪的逻辑。您可以在OOP中这样做,但也可以在通用数据表(数据驱动)中保存所有相关信息!给你!)。您的代码将只实现一般规则,而不是子弹类型与枪支等的实际关系。这将存储在数据库中。您的代码保持不变,但行为是数据驱动的..。当然,您的测试现在需要处理来自数据库的数据。

  • 面向对象与对象组合

如果您的对象确实遵循这个相当僵化的模型,那么OOP就很好了。我真的不是弹药方面的专家,所以我可能错了,但难道不可能想到弹药实体有几个父类的特征吗?这种关系很难在面向对象程序设计中建模。这是JAVA的一个缺点,因为您不能从多个父母那里继承。相反,您应该查看对象组合。

我认为,你从人类可读的标识符中提取短字符串的想法是可以接受的。这些也应该来自您的数据,不应该硬编码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31491237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档