用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()
效果图如下:
当我们选择出战的动物是菲菲和翠花,也就是加菲猫和金毛狗时,会触发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('--------翠花高高兴兴地回去了----------')
当我们选择出战的动物是小小和百万,也就是英短猫和二哈狗时,会触发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('--------最后菲菲带着小小回家----------')
最后一种情况,出战的动物是菲菲和百万,也就是加菲猫和二哈狗时,会触发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('最终百万成功反杀两猫,成为最后的胜利者!')
看看最终效果如何:
最后附上完整代码:
# (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的菜鸟!!!