我正在设计一个RPG,并希望有能力附加类到彼此。我想做的是说一个项目类。武器类将从中继承。剑是武器类的一个实例。我想在剑上附加属性。这些属性将是其他类。例如,我可以将容器类附加到它,而剑(只有剑的那个实例)将成为一个容器。我也可以在那把剑上加上魔法之类的东西。你知道吗
作为奖励,它将很高兴能够结合实例以及。因此,我不必拥有火之附魔职业,只需将它作为附魔的一个实例,并将其附在剑的实例上。你知道吗
我在谷歌上搜索过,没有找到一个适合这个的设计模式。我记得学过一本,但记不起它叫什么了(几年前)
我不知道哪种设计模式允许这样。多个类的动态组合。你知道吗
Tags:
我认为您似乎理解python中的继承思想(例如
class Subclass(Superclass):
),所以这里不讨论这个问题。你知道吗你想“附加”的类可以被视为武器类中的任何其他变量。你知道吗
然后在运行游戏代码的地方
然后您可以在
Weapon
类上添加方法来使用附魔/添加某些逻辑。你知道吗附魔仍然是一个对象的实例,因此如果您在列表中访问它(可能通过名称标识它,或者在列表中循环),那么它的所有方法和变量都是可以访问的。你只需要通过
Weapon
类来构建一个接口,例如get_enchantment(self, name)
,或者让Weapon
类中的其他方法与之交互(例如,当你attack
时,你可以循环使用这些附魔,看看它们是否会增加额外的伤害)。你知道吗关于如何设计类,显然有一些设计方面的考虑(例如,上面的内容是组合在一起的,不包括继承)。例如,您可能只允许每个武器使用一个附魔,在这种情况下,您不应该在武器对象中使用列表,而可以在构造函数中设置
self.enchantment = None
,在add_enchantment
方法中设置self.enchantment = enchantment
。你知道吗我要说的是,您可以将
Enchantment
或其他“可附加”类的实例视为变量。只需确保创建类的实例,例如fire_enchantment = Enchantment('Fireball', 'fire')
。你知道吗在继承和面向对象方面有大量的阅读资料。希望这有帮助!你知道吗
OP的补充答案
我想混合模式就是我要找的。在深入研究之后,我发现了this post,它有一个动态混合的答案
相关问题 更多 >
编程相关推荐