修改现有的代码,以便让猫和狗角色具有增加自身生命值的能力
时间: 2024-10-24 07:16:41 浏览: 17
在原有的基础上,我们可以为`Cat`和`Dog`类添加一个方法,如`heal()`,允许它们恢复部分生命值。以下是修改后的代码:
```python
class Animal:
def __init__(self, name, health, max_health):
self.name = name
self.health = health
self.max_health = max_health
def attack(self, opponent):
damage = 5
if self.health > 0 and opponent.health > 0:
opponent.health -= damage
print(f"{self.name} 对 {opponent.name} 攻击,造成 {damage} 点伤害,{opponent.name} 的剩余生命是 {opponent.health}")
def heal(self, amount=10): # 添加了自愈功能,默认恢复10点生命
if amount > 0 and self.health + amount <= self.max_health:
self.health += amount
print(f"{self.name} 自我恢复了 {amount} 点生命,现在的生命值是 {self.health}")
def get_info(self):
return f"{self.name} 的生命值是 {self.health}/{self.max_health}"
class Cat(Animal):
pass
class Dog(Animal):
pass
# 初始化并赋予一些初始生命值
cat = Cat("小花", 50, 100)
dog = Dog("大黄", 75, 100)
while cat.health > 0 and dog.health > 0:
print(f"轮到{cat.name}行动...")
cat.attack(dog)
cat.heal() # 允许每次攻击后自我恢复一点生命
print(f"轮到{dog.name}行动...")
dog.attack(cat)
dog.heal()
# 如果生命值低于最大生命的一半,额外恢复更多生命
if cat.health < cat.max_health // 2 or dog.health < dog.max_health // 2:
cat.heal(amount=20) # 特殊条件下的额外治疗
dog.heal(amount=20)
if cat.health <= 0:
print(f"{dog.name} 获胜,{cat.name} 生命耗尽")
elif dog.health <= 0:
print(f"{cat.name} 获胜,{dog.name} 生命耗尽")
```
现在,每当角色受到攻击后,它们会自动恢复一定量的生命。如果它们的生命值低于一半,它们将获得额外的大量生命回复。
阅读全文