class Character:
def __init__(self, health, attack_power):
self.health = health
self.attack_power = attack_power
def attack(self):
print("角色进行攻击,造成 {} 点伤害".format(self.attack_power))
def defend(self):
print("角色进行防御")
def level_up(self):
self.health += 10
self.attack_power += 5
print("角色升级,生命值增加10,攻击力增加5")
def learn_skill(self, skill_name):
print("角色学习了新技能: {}".format(skill_name))
class Warrior(Character):
def __init__(self, health, attack_power, weapon):
super().__init__(health, attack_power)
self.weapon = weapon
def attack(self):
print("战士使用 {} 进行近战攻击,造成 {} 点伤害".format(self.weapon, self.attack_power))
class Mage(Character):
def __init__(self, health, attack_power, magic_type):
super().__init__(health, attack_power)
self.magic_type = magic_type
def attack(self):
print("法师释放 {} 魔法,造成 {} 点伤害".format(self.magic_type, self.attack_power))
class Thief(Character):
def __init__(self, health, attack_power):
super().__init__(health, attack_power)
def sneak(self):
print("盗贼进入潜行状态")
def attack(self):
print("盗贼进行偷袭,造成 {} 点伤害".format(self.attack_power))
# 继承实现
# 战士、法师、盗贼类都继承自Character基类,这样它们自动拥有了基类的属性(生命值、攻击力)和行为(攻击、防御、升级、学习技能),
# 减少了代码重复,体现了继承的特性。
# 多态实现
# 每个子类都重写了基类的attack方法,当调用不同子类实例的attack方法时,会表现出不同的行为,这就是多态。
# 比如战士使用武器近战攻击,法师释放魔法攻击,盗贼偷袭。
# 角色升级和技能学习扩展功能
# 在基类中定义了level_up和learn_skill方法,子类继承后可以直接使用,也可以根据需要重写。
# 例如当调用角色实例的level_up方法时,会按照基类定义的逻辑增加生命值和攻击力。
# 调用learn_skill方法时,会打印学习新技能的信息。
# 示例使用
warrior = Warrior(100, 20, "剑")
warrior.attack()
warrior.level_up()
mage = Mage(80, 30, "火焰魔法")
mage.attack()
mage.learn_skill("治疗术")
thief = Thief(90, 25)
thief.sneak()
thief.attack()