- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里是新的Python学习者。我正在尝试用 python 设计一个文本角色扮演游戏,我希望所有敌人小怪的统计数据在游戏的特定部分增加。这是我针对一些敌人的代码:
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、敌人.攻击等来增加。
但我也不知道该怎么做,因为我现在很哭泣。
关于如何通过在大类(class)下指定小类(class)来增加类(class)统计数据或快速增加类(class)统计数据的方法(仅输入并增加它们是行不通的,因为我将有很多敌人小怪)的建议将非常有用谢谢。
最佳答案
Daniel Roseman 说的是真的,在编写代码时应该尽量不要重复自己。如果两个对象非常相似并且仅在某些特定值上有所不同,那么它们实际上是同一个对象。所有自行车都是自行车,但有些自行车的车轮尺寸不同。在这里,您的对象都是一个 Enemy 对象,并且可以这样实现。
但是我会回答你的问题,因为了解子类化非常重要。要子类化一个类,您可以在定义中传入父类,如下所示:
class Zombie(Enemy):
然后,如果 Enemy 类的定义如下:
class Enemy:
def attack():
<your code>
你可以调用对僵尸对象的攻击。它会在Zombie类中寻找attack(),如果没有找到,就会在父类中寻找。如果它在父类中找不到它,它将在该父类的类中查找它,依此类推,一直向上移动到顶级对象。如果根本找不到它,则会引发异常。例如,如果您在 Zombie 类中定义attack(),那么它将覆盖 Enemy 类中的attack()。
考虑到这一切,丹尼尔·罗斯曼是对的。您应该将所有这些放在一个类中,并在构建时传递 hp 等。
关于Python,如何在一个大类下创建特定的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36007356/
我是一名优秀的程序员,十分优秀!