新来的python学习者。我正在尝试用python设计一个文本rpg,我希望在游戏的某个特定部分增加所有敌人怪物的统计数据。以下是我为一些敌人编写的代码:
class Executioner:
def __init__(self,name):
self.name = name
self.potions = 0
self.maxhp = 800
self.hp = self.maxhp
self.attack = 25
self.ability = 0
self.defense = 0
self.goldgain = 333
self.expgain = 250
ExecutionerIG = Executioner("Executioner the slayer")
class Goblin:
def __init__(self,name):
self.name = name
self.potions = 0
self.maxhp = 80
self.hp = self.maxhp
self.attack = 25
self.ability = 0
self.defense = 0
self.goldgain = 5.5
self.expgain = 22
GoblinIG = Goblin("Goblin")
class Zombie:
def __init__(self,name):
self.name = name
self.potions = 0
self.maxhp = 180
self.hp = self.maxhp
self.attack = 19
self.ability = 0
self.defense = 0
self.goldgain = 7
self.expgain = 28
ZombieIG = Zombie("Zombie")
我认为一种快速实现的方法是将这些类定义为一个名为“敌人”的大类,然后调用敌人.hp, 敌人。进攻等来增加。你知道吗
但我也不知道该怎么做,因为我现在还很小。你知道吗
关于如何通过在大类下指定小类来增加类属性的建议,或者快速增加类属性的方法(只是输入它们,增加它们不会起作用,因为我会有很多敌人怪物)将非常感谢。你知道吗
不,那不是个好办法。嵌套类在Python中很少有用,在这里肯定没有帮助。你知道吗
最好是简单地将它们放入一个列表中,您可以循环:
等等。然后,必要时,只需迭代:
作为旁白,我想问一下,对于Executioner、Zombie和Goblin,是否真的需要单独的类;它们只是每个stat的数字不同,所以也许您应该在
__init__
方法中接受这些值作为泛型敌方类。你知道吗danielroseman所说的是真的,在编写代码时应该尽量不要重复。如果两个对象非常相似,只是在某些值上不同,那么它们实际上是同一个对象。所有的自行车都是自行车,但有些有不同的车轮尺寸,例如。在这里,您的对象都是一个敌方对象,可以这样实现。你知道吗
不过,我会回答您的问题,因为子类化非常重要。要对类进行子类化,请在定义中传入父类,如下所示:
class Zombie(Enemy):
如果敌人的等级是这样定义的,例如:
class Enemy: def attack(): <your code>
你可以调用对僵尸对象的攻击。它将在Zombie类中查找attack(),如果找不到,它将在父类中查找。如果在父类中找不到它,它将在父类中查找它,以此类推,一直移动到顶级对象。如果根本找不到它,就会引发异常。例如,如果在Zombie类中定义了attack(),那么它将覆盖敌人类中的attack()。你知道吗
尽管如此,丹尼尔·罗斯曼是对的。你应该把所有这些都放在一个类,并通过在惠普等建设。你知道吗
相关问题 更多 >
编程相关推荐