如何用Python面向对象实现盖伦和瑞文互殴?

首先我们来定义一个英雄类

#定义英雄类,等一下提供盖伦和瑞文继承
class Hero:
    #__init__为初始化方法,在对象实例化的时候自动调用
    def __init__(self,nickname,life_value,aggressivity):    #self:谁调用就指向谁
        self.nickname=nickname
        self.life_value=life_value
        self.aggressivity=aggressivity

    def attack(self,enemy):
        enemy.life_value-=self.aggressivity     #敌人的生命等于敌人原先生命减自己的攻击

接着我们定义一个盖伦类和瑞文类,且让他们继承Hero,继承Hero之后,这两个类也获得了Hero的属性与方法。

class Galen(Hero):
    camp="Demasia"   #阵营是德玛西亚

class Raven(Hero):
    camp = "Knox"    #阵营是诺克萨斯

定义好类了,接下来让我们实例化对象

#实例化一个名叫大宝剑,生命值是100,攻击力是30的对象g1
g1=Galen("大宝剑",100,30)

#实例化一个名叫兔女郎,生命值是100,攻击力是50的对象r1
r1=Raven("兔女郎",100,50)

盖伦和瑞文都出来了,接着让他们实现互殴

while True:
    g1.attack(r1)   #g1调用类中的attack方法打r1
    if r1.life_value<=0:  #如果r1血量小于0判断阵亡,否则输出还剩多少血
        print(f"{g1.nickname}绝杀一击,{r1.nickname}已阵亡,{g1.nickname}胜")
        break
    else:
        print(f"{r1.nickname}还剩{r1.life_value}血")
    r1.attack(g1)  #r1调用类中的attack方法打g1
    if g1.life_value<=0: #如果g1血量小于0判断阵亡,否则输出还剩多少血
        print(f"{r1.nickname}绝杀一击,{g1.nickname}已阵亡,{r1.nickname}胜")
        break
    else:
        print(f"{g1.nickname}还剩{g1.life_value}血")

这里是完整源码

class Hero:
    def __init__(self,nickname,life_value,aggressivity):
        self.nickname=nickname
        self.life_value=life_value
        self.aggressivity=aggressivity

    def attack(self,enemy):
        enemy.life_value-=self.aggressivity

class Galen(Hero):
    camp="Demasia"

class Raven(Hero):
    camp = "Knox"

g1=Galen("大宝剑",100,30)
r1=Raven("兔女郎",100,50)

while True:
    g1.attack(r1)
    if r1.life_value<=0:
        print(f"{g1.nickname}绝杀一击,{r1.nickname}已阵亡,{g1.nickname}胜")
        break
    else:
        print(f"{r1.nickname}还剩{r1.life_value}血")
    r1.attack(g1)
    if g1.life_value<=0:
        print(f"{r1.nickname}绝杀一击,{g1.nickname}已阵亡,{r1.nickname}胜")
        break
    else:
        print(f"{g1.nickname}还剩{g1.life_value}血")


让我们运行一下

 最终兔女郎胜✌,我们也可修改大宝剑的攻击力来加强大宝剑

在这里我们可以修改血量和攻击力 

 修改后

我们再来运行一下

大宝剑胜✌,兔女郎阵亡 

今天的分享就到这里了哦,感谢大家的阅读,希望大家给个关注!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值