猫狗大战----类的实例化和继承,带你看懂类方法的使用

用python编写程序,实现猫狗大战小游戏情景,让你更好的了解类方法的使用!

要求:

1.可创建多个猫和狗的对象,并初始化每只猫和狗(包括昵称、品种、攻击力、生命值,速度等属性)。

2.猫可以攻击狗,狗的生命值会根据猫的攻击力而下降;同理狗可以攻击猫,猫的生命值会根据狗的攻击力而下降。

3.猫和狗可以通过吃来增加自身的生命值。

4.猫和狗可以通过提高速度来追击或逃避敌方的攻击。

5.当猫或狗的生命值小于等于0时,表示已被对方杀死。

6.根据不同出战的动物来调用不同的函数,实现多情节解析。

好了,话不多说,正式进入正文。

(1)先判断出战的动物,这里猫的一族有英短(小小)和加菲(菲菲);狗的一族有金毛(翠花)和二哈(百万);为什么这样取名,从抖音看到的宠物哈哈哈。

print('猫之一族中小小和菲菲是好朋友,狗之一族中百万和翠花是一对')

a = str(input('请选择猫的品种,猫的品种有加菲和英短:'))
b = str(input('请选择狗的品种,狗的品种有金毛和二哈:'))
class Check:
    #判断出战的动物
        if a == '加菲':
            print('出战的是菲菲')
        elif a == '英短':
            print('出战的是小小')
        if b == '金毛':
            print('出战的是翠花')
        elif b == '二哈':
            print('出战的是百万')

(2)定义猫和狗两个类的一些基本属性,比如种类,昵称,攻击力、生命值、速度。先让猫和狗的角色属性定为cat和dog,方便后续使用。

    def __init__(self,kind,name,attack,life,quick):
        self.kind = kind   #种类
        self.name = name    #名字
        self.attack = attack  #攻击力
        self.life = life      #生命
        self.quick = quick   #速度
   role = 'cat'  	#猫的角色属性都是猫
   role = 'dog'  #狗的角色属性都是dog

(3)定义猫攻击狗的函数,让狗的生命值随猫的攻击而下降。

    def attacked1(self,dog):
        #定义猫攻击狗的函数
        print("当猫攻击狗时:")
        dog.life -= self.attack  #狗的生命值会根据猫的攻击力而下降

同理,狗攻击猫的函数也一样,猫的生命值随狗的攻击而下降。


    def attacked2(self,cat):
        #定义狗攻击猫的函数
        print("当狗攻击猫时:")
        cat.life -= self.attack  #猫的生命值会根据狗的攻击力而下降

(4)接着定义生命值函数,判断生命值的余值,当生命值小于0时,该动物被敌方杀死。


    def health(self):
        #判断生命值
        if self.life <= 0:
            print(self.name, "已被杀死")
        else:
            print(self.name, '的生命值还剩下', self.life)

(5)定义一个能量补给函数,当猫或狗吃到补给时会回血,增加生命值。

    def eat(self):
        print('------得到能量补充!------')
        self.life += 30

(6)定义猫和狗速度函数,当猫或狗处于某种状态时速度会增加。代码如下:

    def quick1(self):
        #增加翠花奔跑的速度
        self.quick +=20
        print('飞快奔跑速度达到', dog1.quick)

    def quick6(self):
        #增加百万奔跑的速度
        self.quick +=30
        print('飞快奔跑速度达到', dog2.quick)

    def quick3(self):
        #增加百万追击的速度
        print('但百万的速度达到',dog2.quick,'很快追上菲菲')
        self.quick += 40

    def quick2(self):
        #增加菲菲逃命的速度
        self.quick += 20
        print(cat2.name,'见状急速逃亡速度达到',cat2.quick)

    def quick4(self):
        #增加小小追击的速度
        self.quick +=30
        print(cat1.name,'飞速追赶速度达到',cat1.quick)

    def quick5(self):
        #增加菲菲追击的速度
        self.quick += 20
        print(cat2.name, '飞速追赶速度达到', cat2.quick)

(7)实例化对象,给猫和狗赋值。


#实例化对象
cat1 = Cat("英短",'小小',80,300,50)
cat2 = Cat("加菲",'菲菲',70,500,80)

dog1 = Dog('金毛','翠花',50,500,60)
dog2 = Dog('二哈','百万',100,400,50)

(8)有了上面这些功能就可以开始我们的小游戏了,回到最开始对出战动物的判断那里,当我们选择的出战动物是小小和翠花时,也就是英短猫和金毛,会触发Cat1()这个函数。

代码如下:


if a == cat1.kind and b == dog1.kind:
    #如果出战的是小小和翠花,调用Cat1()函数
    Cat1()
def Cat1() :
    print('有一天小小出行时看到路上有一块零食,恰巧翠花从后面走来,从此纷争开始了.......')
    print("-------查看生命值---------")
    cat1.health()
    dog1.health()
    print('两者因为零食而争吵起来!')
    print("-------开始战斗----------")
    cat1.attacked1(dog1)
    dog1.health()
    dog1.attacked2(cat1)  #翠花攻击小小
    cat1.health()
    print('-----猫抢到零食并吃下!----')
    cat1.eat()
    cat1.health()
    dog1.health()
    print('------狗因此发怒极尽升华,攻击力大涨!-------')
    for i in range(6):
        dog1.attack += 40
    cat1.attacked1(dog1)
    dog1.health()
    dog1.attacked2(cat1)
    cat1.health()

    print('-------------------------------')
    print('菲菲听说同类被狗咬死,急忙赶来复仇!')
    for i in range(4):
        cat2.attack +=50
    cat2.attacked1(dog1)
    dog1.health()
    print('此时翠花重伤濒死,速度大增开始寻求百万的帮助!')

    for i in range(3):
        dog1.quick +=10   #循环3次提高翠花的速度
    dog1.quick1()
    print('百万看到翠花被追杀,迅速加入战斗!')
    for i in range(3):
        dog2.attack +=30   #循环3次提高百万的攻击力
    dog2.attacked2(cat2)
    cat2.health()
    dog1.attacked2(cat2)
    cat2.health()    #查看菲菲的生命值
    print('菲菲开始大反击!')
    cat1.attacked1(dog1)
    dog1.health()    #查看翠花的生命值
    cat1.attacked1(dog2)
    dog2.health()
    print('百万看到爱狗翠花死亡,苏醒狼族血脉之力,攻击和速度暴涨')
    for i in range(3):
        dog2.quick +=30
    cat2.quick2()     #查询菲菲的速度
    dog2.quick3()     #查询百万的速度
    print('百万释放必杀技天狼斩!')
    dog2.attacked2(cat2)
    cat2.health()

效果图如下: 

猫狗大战----类的实例化和继承,带你看懂类方法的使用_第1张图片

猫狗大战----类的实例化和继承,带你看懂类方法的使用_第2张图片 

 当我们选择出战的动物是菲菲和翠花,也就是加菲猫和金毛狗时,会触发Cat2()这个函数。

代码如下:


elif a == cat2.kind and b==dog1.kind:
    #如果出战的是菲菲和翠花,调用Cat2()函数
    Cat2()
def Cat2():
    print('有一天菲菲出行时看到路上有一个香喷喷的包子,恰巧翠花也闻到香味,从此纷争开始了.......')
    print("-------查看生命值---------")
    cat2.health()
    dog1.health()
    print('两者因为零食而争吵起来!')
    print("-------开始战斗----------")
    cat2.attacked1(dog1)  #菲菲攻击翠花
    dog1.health()         #查看翠花的生命值
    dog1.attacked2(cat2)  #翠花攻击菲菲
    cat2.health()         #查看菲菲的生命值
    print('-----狗抢到零食并吃下!----')
    dog1.eat()           #翠花得到补给
    cat2.health()        #查看菲菲的生命值
    dog1.health()        #查看翠花的生命值
    print('------狗得到补给,攻击力大涨-------')
    for i in range(6):
        #提高翠花的攻击力
        dog1.attack += 70
    cat2.attacked1(dog1)  #菲菲攻击翠花
    dog1.health()         #查看翠花的生命值
    dog1.attacked2(cat2)  #翠花攻击菲菲
    cat2.health()        #查看菲菲的生命值
    print('--------翠花高高兴兴地回去了----------')

效果图如下:猫狗大战----类的实例化和继承,带你看懂类方法的使用_第3张图片

 

 当我们选择出战的动物是小小和百万,也就是英短猫和二哈狗时,会触发Dog1()这个函数。

代码如下:


if a ==cat1.kind and b == dog2.kind:
    # 如果出战的是小小和百万,调用Dog1()函数
    Dog1()
def Dog1():
    print('百万和翠花吵架了,出来解闷时看到菲菲和小小在嬉戏玩闹,顿时心生怒气.......')
    print("-------查看生命值---------")
    cat1.health()
    cat2.health()
    dog2.health()
    print('百万过去搞事情,菲菲和小小见百万来找茬,很快进入战斗状态!')
    print("-------开始战斗----------")
    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()  # 查看百万的生命值
    cat2.attacked1(dog2)  #菲菲攻击百万
    dog2.health()         #查看百万的生命值
    dog2.attacked2(cat1)   #百万攻击小小
    cat1.health()         #查看小小的生命值
    dog2.attacked2(cat2)    #百万攻击菲菲
    cat2.health()         #查看菲菲的生命值
    print('-----百万见打不过两者迅速开溜-------')
    for i in range(5):
        dog2.quick += 20
    dog2.quick6()      #查看百万的速度
    print('两猫此刻怒气大涨,攻击力和速度增加')
    for i in range(3):
        #提高两猫的攻击和速度
        cat1.attack += 30
        cat2.attack += 30
        cat1.quick += 20
        cat2.quick += 20
    cat1.quick4()   #查看菲菲的速度
    cat2.quick5()   #查看小小的速度
    print('----百万见两猫穷追不止,决定殊死一搏----')
    for i in range(6):
        #提高百万的攻击力
        dog2.attack += 20

    dog2.attacked2(cat2)  #百万攻击菲菲
    cat2.health()  # 查看菲菲的生命值

    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()
    dog2.attacked2(cat1)  #百万反击小小
    cat1.health()
    print('菲菲见小小被杀死,疯狂攻击百万!')
    cat2.attacked1(dog2)  #菲菲攻击百万
    dog2.health()         #查看百万的生命值
    print('--------最后菲菲带着小小回家----------')

看看效果如何:猫狗大战----类的实例化和继承,带你看懂类方法的使用_第4张图片

 猫狗大战----类的实例化和继承,带你看懂类方法的使用_第5张图片

 

最后一种情况,出战的动物是菲菲和百万,也就是加菲猫和二哈狗时,会触发Dog2()这个函数。

代码如下:

elif a==cat2.kind and b ==dog2.kind:
    # 如果出战的是菲菲和百万,调用Dog2()函数
    Dog2()
def Dog2():
    print('百万去超市偷来一块肉正吃的津津有味,菲菲见状想过去分一杯羹,却被百万拒绝!')
    print("-------查看生命值---------")
    cat2.health()
    dog2.health()
    print('两者因为鲜肉而争吵起来!')
    print("-------开始战斗----------")
    cat2.attacked1(dog2)  # 菲菲攻击翠花
    dog2.health()  # 查看翠花的生命值
    dog2.attacked2(cat2)  # 翠花攻击菲菲
    cat2.health()  # 查看菲菲的生命值
    print('-----百万打退了菲菲并吃下鲜肉,菲菲心中不服去找小小帮忙----')
    dog2.eat()
    cat2.health()    #查看菲菲的生命值
    dog2.health()    #查看百万的生命值
    print('菲菲带来帮手小小,两猫开始报复百万')
    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()         #查看百万的生命值
    cat2.attacked1(dog2)  #菲菲攻击百万
    dog2.health()         #查看百万的生命值
    print('百万见状怒气大涨,极尽升华,攻击力和身法速度全面大涨!')
    for i in range(5):
        #提高百万的攻击力
        dog2.attack +=50
    dog2.attacked2(cat1)  #百万攻击小小
    cat1.health()         #查看小小的生命值
    dog2.attacked2(cat2)  #百万攻击菲菲
    cat2.health()         #查看菲菲的生命值
    print('此时菲菲重伤看到小小死去,开始边跑边向百万求饶,但百万不接受,菲菲决定拼死一击!')
    for i in range(2):
        #提高小小的攻击力
        cat1.attack +=40
    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()         #查看百万的生命值
    dog2.attacked2(cat1)  #百万攻击小小
    cat1.health()         #查看小小的生命值
    print('最终百万成功反杀两猫,成为最后的胜利者!')

看看最终效果如何:

猫狗大战----类的实例化和继承,带你看懂类方法的使用_第6张图片

猫狗大战----类的实例化和继承,带你看懂类方法的使用_第7张图片 

最后附上完整代码:

# (1)可创建多个猫和狗的对象,并初始化每只猫和狗(包括昵称、品种、攻击力、生命值,速度等属性)。
# (2)猫可以攻击狗,狗的生命值会根据猫的攻击力而下降;同理狗可以攻击猫,猫的生命值会根据狗的攻击力而下降。
# (3)猫和狗可以通过吃来增加自身的生命值。
# (4)猫和狗可以通过提高速度来追击或逃避敌方的攻击。
# (4)当猫或狗的生命值小于等于0时,表示已被对方杀死。
# (5)根据不同出战的动物来调用不同的函数,实现多情节解析。

print('猫之一族中小小和菲菲是好朋友,狗之一族中百万和翠花是一对')

a = str(input('请选择猫的品种,猫的品种有加菲和英短:'))
b = str(input('请选择狗的品种,狗的品种有金毛和二哈:'))
class Check:
    #判断出战的动物
        if a == '加菲':
            print('出战的是菲菲')
        elif a == '英短':
            print('出战的是小小')
        if b == '金毛':
            print('出战的是翠花')
        elif b == '二哈':
            print('出战的是百万')


class Cat(Check):
    role = 'cat'  	#猫的角色属性都是猫
    def __init__(self,kind,name,attack,life,quick):
        self.kind = kind   #种类
        self.name = name    #名字
        self.attack = attack  #攻击力
        self.life = life      #生命
        self.quick = quick   #速度

    def attacked1(self,dog):
        #定义猫攻击狗的函数
        print("当猫攻击狗时:")
        dog.life -= self.attack  #狗的生命值会根据猫的攻击力而下降

    def health(self):
        #判断猫的生命值
        if self.life <=0:
            print(self.name,"已被杀死")
        else:
            print(self.name,'的生命值还剩下',self.life)

    def eat(self):
        print('----得到能量补充!----')
        self.life += 30

    def quick2(self):
        #增加菲菲逃命的速度
        self.quick += 20
        print(cat2.name,'见状急速逃亡速度达到',cat2.quick)

    def quick4(self):
        #增加小小追击的速度
        self.quick +=30
        print(cat1.name,'飞速追赶速度达到',cat1.quick)

    def quick5(self):
        #增加菲菲追击的速度
        self.quick += 20
        print(cat2.name, '飞速追赶速度达到', cat2.quick)


class Dog(Check):
    role = 'dog'  #狗的角色属性都是dog
    def __init__(self,kind,name,attack,life,quick):
        self.kind = kind   #种类
        self.name = name   #名字
        self.attack = attack  #攻击力
        self.life = life      #生命
        self.quick = quick    #速度

    def attacked2(self,cat):
        #定义狗攻击猫的函数
        print("当狗攻击猫时:")
        cat.life -= self.attack  #猫的生命值会根据狗的攻击力而下降

    def health(self):
        #判断生命值
        if self.life <= 0:
            print(self.name, "已被杀死")
        else:
            print(self.name, '的生命值还剩下', self.life)

    def eat(self):
        print('------得到能量补充!------')
        self.life += 30

    def quick1(self):
        #增加翠花奔跑的速度
        self.quick +=20
        print('飞快奔跑速度达到', dog1.quick)

    def quick6(self):
        #增加百万奔跑的速度
        self.quick +=30
        print('飞快奔跑速度达到', dog2.quick)


    def quick3(self):
        #增加百万追击的速度
        print('但百万的速度达到',dog2.quick,'很快追上菲菲')
        self.quick += 40



#实例化对象
cat1 = Cat("英短",'小小',80,300,50)
cat2 = Cat("加菲",'菲菲',70,500,80)

dog1 = Dog('金毛','翠花',50,500,60)
dog2 = Dog('二哈','百万',100,400,50)

def Cat1() :
    print('有一天小小出行时看到路上有一块零食,恰巧翠花从后面走来,从此纷争开始了.......')
    print("-------查看生命值---------")
    cat1.health()
    dog1.health()
    print('两者因为零食而争吵起来!')
    print("-------开始战斗----------")
    cat1.attacked1(dog1)
    dog1.health()
    dog1.attacked2(cat1)  #翠花攻击小小
    cat1.health()
    print('-----猫抢到零食并吃下!----')
    cat1.eat()
    cat1.health()
    dog1.health()
    print('------狗因此发怒极尽升华,攻击力大涨!-------')
    for i in range(6):
        dog1.attack += 40
    cat1.attacked1(dog1)
    dog1.health()
    dog1.attacked2(cat1)
    cat1.health()

    print('-------------------------------')
    print('菲菲听说同类被狗咬死,急忙赶来复仇!')
    for i in range(4):
        cat2.attack +=50
    cat2.attacked1(dog1)
    dog1.health()
    print('此时翠花重伤濒死,速度大增开始寻求百万的帮助!')

    for i in range(3):
        dog1.quick +=10   #循环3次提高翠花的速度
    dog1.quick1()
    print('百万看到翠花被追杀,迅速加入战斗!')
    for i in range(3):
        dog2.attack +=30   #循环3次提高百万的攻击力
    dog2.attacked2(cat2)
    cat2.health()
    dog1.attacked2(cat2)
    cat2.health()    #查看菲菲的生命值
    print('菲菲开始大反击!')
    cat1.attacked1(dog1)
    dog1.health()    #查看翠花的生命值
    cat1.attacked1(dog2)
    dog2.health()
    print('百万看到爱狗翠花死亡,苏醒狼族血脉之力,攻击和速度暴涨')
    for i in range(3):
        dog2.quick +=30
    cat2.quick2()     #查询菲菲的速度
    dog2.quick3()     #查询百万的速度
    print('百万释放必杀技天狼斩!')
    dog2.attacked2(cat2)
    cat2.health()

def Cat2():
    print('有一天菲菲出行时看到路上有一个香喷喷的包子,恰巧翠花也闻到香味,从此纷争开始了.......')
    print("-------查看生命值---------")
    cat2.health()
    dog1.health()
    print('两者因为零食而争吵起来!')
    print("-------开始战斗----------")
    cat2.attacked1(dog1)  #菲菲攻击翠花
    dog1.health()         #查看翠花的生命值
    dog1.attacked2(cat2)  #翠花攻击菲菲
    cat2.health()         #查看菲菲的生命值
    print('-----狗抢到零食并吃下!----')
    dog1.eat()           #翠花得到补给
    cat2.health()        #查看菲菲的生命值
    dog1.health()        #查看翠花的生命值
    print('------狗得到补给,攻击力大涨-------')
    for i in range(6):
        #提高翠花的攻击力
        dog1.attack += 70
    cat2.attacked1(dog1)  #菲菲攻击翠花
    dog1.health()         #查看翠花的生命值
    dog1.attacked2(cat2)  #翠花攻击菲菲
    cat2.health()        #查看菲菲的生命值
    print('--------翠花高高兴兴地回去了----------')

def Dog1():
    print('百万和翠花吵架了,出来解闷时看到菲菲和小小在嬉戏玩闹,顿时心生怒气.......')
    print("-------查看生命值---------")
    cat1.health()
    cat2.health()
    dog2.health()
    print('百万过去搞事情,菲菲和小小见百万来找茬,很快进入战斗状态!')
    print("-------开始战斗----------")
    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()  # 查看百万的生命值
    cat2.attacked1(dog2)  #菲菲攻击百万
    dog2.health()         #查看百万的生命值
    dog2.attacked2(cat1)   #百万攻击小小
    cat1.health()         #查看小小的生命值
    dog2.attacked2(cat2)    #百万攻击菲菲
    cat2.health()         #查看菲菲的生命值
    print('-----百万见打不过两者迅速开溜-------')
    for i in range(5):
        dog2.quick += 20
    dog2.quick6()      #查看百万的速度
    print('两猫此刻怒气大涨,攻击力和速度增加')
    for i in range(3):
        #提高两猫的攻击和速度
        cat1.attack += 30
        cat2.attack += 30
        cat1.quick += 20
        cat2.quick += 20
    cat1.quick4()   #查看菲菲的速度
    cat2.quick5()   #查看小小的速度
    print('----百万见两猫穷追不止,决定殊死一搏----')
    for i in range(6):
        #提高百万的攻击力
        dog2.attack += 20

    dog2.attacked2(cat2)  #百万攻击菲菲
    cat2.health()  # 查看菲菲的生命值

    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()
    dog2.attacked2(cat1)  #百万反击小小
    cat1.health()
    print('菲菲见小小被杀死,疯狂攻击百万!')
    cat2.attacked1(dog2)  #菲菲攻击百万
    dog2.health()         #查看百万的生命值
    print('--------最后菲菲带着小小回家----------')


def Dog2():
    print('百万去超市偷来一块肉正吃的津津有味,菲菲见状想过去分一杯羹,却被百万拒绝!')
    print("-------查看生命值---------")
    cat2.health()
    dog2.health()
    print('两者因为鲜肉而争吵起来!')
    print("-------开始战斗----------")
    cat2.attacked1(dog2)  # 菲菲攻击翠花
    dog2.health()  # 查看翠花的生命值
    dog2.attacked2(cat2)  # 翠花攻击菲菲
    cat2.health()  # 查看菲菲的生命值
    print('-----百万打退了菲菲并吃下鲜肉,菲菲心中不服去找小小帮忙----')
    dog2.eat()
    cat2.health()    #查看菲菲的生命值
    dog2.health()    #查看百万的生命值
    print('菲菲带来帮手小小,两猫开始报复百万')
    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()         #查看百万的生命值
    cat2.attacked1(dog2)  #菲菲攻击百万
    dog2.health()         #查看百万的生命值
    print('百万见状怒气大涨,极尽升华,攻击力和身法速度全面大涨!')
    for i in range(5):
        #提高百万的攻击力
        dog2.attack +=50
    dog2.attacked2(cat1)  #百万攻击小小
    cat1.health()         #查看小小的生命值
    dog2.attacked2(cat2)  #百万攻击菲菲
    cat2.health()         #查看菲菲的生命值
    print('此时菲菲重伤看到小小死去,开始边跑边向百万求饶,但百万不接受,菲菲决定拼死一击!')
    for i in range(2):
        #提高小小的攻击力
        cat1.attack +=40
    cat1.attacked1(dog2)  #小小攻击百万
    dog2.health()         #查看百万的生命值
    dog2.attacked2(cat1)  #百万攻击小小
    cat1.health()         #查看小小的生命值
    print('最终百万成功反杀两猫,成为最后的胜利者!')





if a == cat1.kind and b == dog1.kind:
    #如果出战的是小小和翠花,调用Cat1()函数
    Cat1()

elif a == cat2.kind and b==dog1.kind:
    #如果出战的是菲菲和翠花,调用Cat2()函数
    Cat2()

if a ==cat1.kind and b == dog2.kind:
    # 如果出战的是小小和百万,调用Dog1()函数
    Dog1()

elif a==cat2.kind and b ==dog2.kind:
    # 如果出战的是菲菲和百万,调用Dog2()函数
    Dog2()

 好了,模拟猫狗大战的游戏到这里就结束了,欢迎大家在评论区批评斧正或点赞,一枚刚入门python的菜鸟!!!

你可能感兴趣的:(python,开发语言)