写出面向对象之奥比岛程序设计代码包含继承方法
时间: 2023-09-30 22:10:38 浏览: 55
好的,下面是一份包含继承方法的面向对象的奥比岛程序设计代码:
```python
class Character:
def __init__(self, name, health):
self.name = name
self.health = health
def attack(self, enemy):
print(f"{self.name} attacks {enemy.name}!")
enemy.take_damage(10)
def take_damage(self, damage):
self.health -= damage
if self.health <= 0:
print(f"{self.name} has been defeated!")
class Player(Character):
def __init__(self, name, health, mana):
super().__init__(name, health)
self.mana = mana
def use_mana(self):
self.mana -= 10
print(f"{self.name} uses 10 mana!")
def special_attack(self, enemy):
if self.mana >= 10:
print(f"{self.name} uses special attack on {enemy.name}!")
enemy.take_damage(20)
self.use_mana()
else:
print(f"{self.name} doesn't have enough mana!")
self.attack(enemy)
class Enemy(Character):
def __init__(self, name, health, damage):
super().__init__(name, health)
self.damage = damage
def attack(self, player):
print(f"{self.name} attacks {player.name} for {self.damage} damage!")
player.take_damage(self.damage)
# 测试代码
player1 = Player("Player 1", 100, 50)
enemy1 = Enemy("Enemy 1", 50, 10)
player1.special_attack(enemy1)
enemy1.attack(player1)
```
在这个代码中,我们定义了一个 `Character` 类作为父类,里面包含了攻击和承受伤害的方法。然后我们定义了 `Player` 和 `Enemy` 两个子类,它们继承了 `Character` 类的属性和方法,并且各自实现了一些独特的方法。
在 `Player` 类中,我们新增加了 `mana` 属性和 `use_mana` 方法,用于实现特殊攻击的功能。在 `special_attack` 方法中,如果玩家有足够的 mana,就会使用特殊攻击造成更大的伤害。否则就会使用普通攻击。
在 `Enemy` 类中,我们重写了 `attack` 方法,使得敌人可以直接攻击玩家并造成伤害。
在测试代码中,我们创建了一个玩家和一个敌人,并且让它们进行了一次特殊攻击和一次普通攻击。