用python语言,用类,对象写类似口袋妖怪战斗

刚学完面对像类,趁周末突发灵感,写了这个。

第一次写,经验有点不足,可能有些地方有更好的表达方式

这里开始正文

import random

class Monstr: #怪物

def __init__(self,hp,name,ad):

self.hp=hp #血量

self.name=name #怪物名称

self.ad=ad #攻击造成的伤害

# self.state='' #状态

def fight(self,two): #fight:战斗

print(self.name,'对',two.name,'造成',self.ad,'点伤害')

two.hp-=self.ad

print(two.name,'还剩',two.hp,'点血量')

print('-'*100)

def arr():

print('----->正在探索中') #这里为了使运行后更加真实,

select = input('嘀——嘀——嘀~~,野生杰尼龟出现了,是否战斗')

if select == '战斗':

print('战斗开始,这一次绝对是你了——皮卡丘')

elif select=='逃跑':

print('逃跑成功')

return

#这里pikachu代表皮卡丘,是我的宠物,而jenny代表野生杰尼龟

pikachu = Monstr(100, '皮卡丘', random.randint(10, 30))

jenny = Monstr(100, '杰尼龟', random.randint(10, 30))

# pikachu.explore()

while True:

select1=int(input('【1】战斗------------------【2】捕捉----------------'))

if select1==1:

firstr =random.randint(1, 2) #判断谁为先手攻击

if firstr == 1:

print('皮卡丘使用了【十万伏特】')

pikachu.fight(jenny)

# pikachu.text()

print('\n杰尼龟使用了【水枪】')

jenny.fight(pikachu)

elif firstr==2:

print('杰尼龟使用了【水枪】')

jenny.fight(pikachu)

print('\n皮卡丘使用了【十万伏特】')

pikachu.fight(jenny)

if pikachu.hp < 0:

print('{}战败了,{}获胜,还剩{}血'.format(pikachu.name, jenny.name, jenny.hp))

break

elif jenny.hp <= 0:

print('{}战败了,{}获胜,还剩{}血'.format(jenny.name, pikachu.name, pikachu.hp))

break

elif select1==2: #捕捉

if jenny.hp>=30:

print('血量太高,捕捉失败,')

elif jenny.hp<30:

print('捕捉成功!!!你获得新宠物【杰尼龟】')

break

arr()

到这里结束。

实图如下

运行结果:

各位大佬感觉怎么样,目前在学校学习python已3周了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,下面是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`类演示了一个简单的口袋妖怪战斗,每次随机确定攻击方和防御方,直到其中一个宠物失去战斗力。最后输出胜利者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值