python宠物类的实现,Python:口袋妖怪战斗(类,功能)
时间: 2024-02-13 12:03:25 浏览: 85
Python中面向对象编程:类与对象的深度解析
好的,下面是Python宠物类的实现以及一个简单的口袋妖怪战斗程序:
```python
import random
class Pet:
def __init__(self, name, level):
self.name = name
self.level = level
self.hp = level * 10
self.exp = 0
self.is_fainted = False
def attack(self, other_pet):
if self.is_fainted:
print(f"{self.name}不能攻击,因为它已经失去了战斗力!")
return
damage = random.randint(1, 5) * self.level
other_pet.hp -= damage
print(f"{self.name}对{other_pet.name}造成了{damage}点伤害")
if other_pet.hp <= 0:
other_pet.is_fainted = True
self.gain_exp(10 * other_pet.level)
print(f"{other_pet.name}已经不能战斗了!")
def gain_exp(self, amount):
self.exp += amount
while self.exp >= self.level * 10:
self.level += 1
self.hp += 5
self.exp -= self.level * 10
print(f"{self.name}获得了{amount}点经验,现在等级为{self.level}")
def __str__(self):
status = "已经失去了战斗力" if self.is_fainted else f"HP:{self.hp}"
return f"{self.name}(Lv.{self.level}) - {status}"
# 简单的口袋妖怪战斗程序
pikachu = Pet("皮卡丘", 5)
charmander = Pet("小火龙", 5)
while not pikachu.is_fainted and not charmander.is_fainted:
attacker = pikachu if random.randint(0, 1) == 0 else charmander
defender = charmander if attacker == pikachu else pikachu
print(f"{attacker.name}开始攻击!")
attacker.attack(defender)
print(f"{defender.name}的状态:{defender}")
print("战斗结束!")
if pikachu.is_fainted:
print(f"{pikachu.name}输了!")
elif charmander.is_fainted:
print(f"{charmander.name}输了!")
```
这个程序实现了一个宠物类`Pet`,它有`name`、`level`、`hp`、`exp`和`is_fainted`属性,以及`attack`、`gain_exp`和`__str__`方法。`attack`方法表示攻击,会随机造成1-5倍`level`的伤害,并减少对方的`hp`。如果对方`hp`小于等于0,它就会失去战斗力,并且攻击方会获得10 * 对方`level`的经验。`gain_exp`方法表示获得经验,当经验值达到当前等级所需的经验时,等级会升级,`hp`也会增加5。`__str__`方法表示对象的字符串表示形式,在这里用于输出对象的状态。
下面的程序利用`Pet`类演示了一个简单的口袋妖怪战斗,每次随机确定攻击方和防御方,直到其中一个宠物失去战斗力。最后输出胜利者。
阅读全文