我有一个关于如何处理这种类层次结构的问题。层次结构与游戏有关,但我认为它足以通过gamdev。我可以想象这种事偶尔会出现,所以我很好奇可能的解决方案如何处理类层次结构
我有一个名为BaseCharacter的基类,它定义了我的游戏中的一个角色。它包含所有基本统计数据,状态效应持有者,事件等以具有基线字符。我的大部分游戏逻辑都是在BaseCharacter的实体上进行操作,在必要时进行投射。
从那里我继承到一个人形生物类,它增加了必要的结构和方法来为角色添加装备(武器,护甲等),最后我有一个PlayableCharacter类,从类人生物吸入并添加了当前EXP,可配置能力结构等
因此类结构很简单:
BaseCharacter --->人形---> PlayableCharacter
这种结构用于定义玩家身边人物的伟大工程,但我可能会决定再改进一下结构。我必须能够将“敌人”类添加到层次结构中。为了满足敌人的需求,我需要添加一些与EXP /点有关的数据结构/方法来打败敌人,物品战斗表等。
问题是,我在哪里添加这些结构?将它们添加到BaseCharacter似乎是一个糟糕的主意,因为我基本上说每个角色都有一个敌方实体所需的方法/数据结构。我考虑开始一个单独的类,最终会看起来像这样:
BaseCharacter--->Humanoid--->PlayableCharacter
\---->Enemy--->EnemyHumanoid
其中Enemy继承自BaseCharacter。 EnemyHumanoid将添加与BaseCharacter-> Humanoid的继承相同的一组方法/数据结构。这是有效的,但意味着我不能将敌人人型投入人型生物,尽管敌人人型符合人形生物的要求。这也增加了冗余,因为我有这两个继承添加完全相同的一组对象/方法。
然后使用名为EnemyInterface一个单独的类考虑,并与继承层次是这样结束:
BaseCharacter----->Humanoid----->PlayableCharacter
| |
V V
Enemy EnemyHumanoid
敌人EnemyHumanoid都实现EnemyInterface。但是,我现在失去了敌人< - >敌人人类关系。我应该在这里使用多重不义行为吗? (有敌人和人型生物的敌人人形?)被认为是坏形式?有没有更合乎逻辑的方法来做到这一点?这里的例子非常简单,但如果我最终分裂我的类层次更多,它只会变得更加复杂。
任何帮助,将不胜感激