【功能】
学习的代码:孙悟空白骨精PK赛,再来一盘练习题( python 3.7版本下调试成功)
【问题一】
- 孙悟空、白骨精PK赛,每人初始生命值默认100(也可以修改为初始默认值不同);
- 每一局多个回合,每回合攻击可给对方减少随机的生命值,直到一方生命值小于0为结束一局
- 共三局,局数多的为最终胜利
![](https://img.haomeiwen.com/i21401543/b9edfe288cd2945f.jpg)
![](https://img.haomeiwen.com/i21401543/85225031128e82f1.jpg)
【以下为本人所写代码,右上角有复制按钮,可一键复制】
#第七关 孙悟空白骨精PK赛再来一盘 【我开心 Ver:20200221.01】
import time #导入time库,主要用做下面代码中的延时功能
import random #导入random库,主要用做下面代码中的生成随机数功能
SunWuKong_shengli = 0 #孙悟空的胜利局数,初始胜利局数为0
BaiGuJing_shengli = 0 #白骨精的胜利局数,初始胜利局数为0
for i in range(1, 4): #共三局,每局一直攻击到其中一方生命值小于0
SunWuKong_life = random.randint(100, 100) # 每一局开始,为孙悟空的初始生命值。randint()表示从括号内的2个数字之间随机生成一个数
BaiGuJing_life = random.randint(100, 100) # 每一局开始,为白骨精的初始生命值。为了公平起,所以将两人的初始值全部设置为100了,可将100,100修改为自己想要的数值
print("========= 第",i,"局开始 =============")
print("【孙悟空】本局初始生命值:", SunWuKong_life) # 每一局开始,显示孙悟空的初始生命值
print("【白骨精】本局初始生命值:", BaiGuJing_life) # 每一局开始,显示白骨精的初始生命值
huihe=1 # 每一局开始,将回合数从1开始
while SunWuKong_life > 0 and BaiGuJing_life > 0: #如果孙悟空和白骨精的生命值都大于0,就一直攻击,直到有一方小于0结束本局
print(' -----------------------第',i,'局:第', huihe, '回合')
SunWuKong_gongji = random.randint(20, 50) # 随机生成孙悟空的本回合的攻击力。20,50表示从20-50之间随机选择一个数字。
BaiGuJing_gongji = random.randint(20, 50) # 随机生成白骨精的本回合的攻击力
SunWuKong_life = SunWuKong_life - BaiGuJing_gongji #本孙悟空目前生命值=原生命值-白骨精的攻击点数
BaiGuJing_life = BaiGuJing_life - SunWuKong_gongji #白骨精目前生命值=原生命值-孙悟空的攻击点数
print(" 【孙悟空】发起攻击,对【白骨精】造成", SunWuKong_gongji, "点伤害。 【白骨精】目前生命力:", BaiGuJing_life)
print(" 【白骨精】发起攻击,对【孙悟空】造成", BaiGuJing_gongji, "点伤害。 【孙悟空】目前生命力:", SunWuKong_life)
#print(' -----------------')
if SunWuKong_life > 0 and BaiGuJing_life <= 0:
print("第",i,"局结束,【孙悟空】获得本局胜利,白骨精死翘翘了!")
SunWuKong_shengli = SunWuKong_shengli + 1
time.sleep(5)
elif BaiGuJing_life > 0 and SunWuKong_life <= 0:
print("第",i,"局结束,【白骨精】获得本局胜利!,孙悟空死翘翘了!")
BaiGuJing_shengli = BaiGuJing_shengli + 1
time.sleep(5)
elif BaiGuJing_life <= 0 and SunWuKong_life <= 0:
print("第",i,"局结束,哎呀,孙悟空和白骨精同归于尽了!")
time.sleep(5)
else:
huihe = huihe + 1 # 回合数加1,继续战斗
print(" 继续战斗!!!")
time.sleep(1)
print("\n\n共",i,"局比赛,其中【孙悟空】获得",SunWuKong_shengli,"场胜利,【白骨经】获得",BaiGuJing_shengli,"场胜利,其余为平局")
if SunWuKong_shengli > BaiGuJing_shengli:
print("【孙悟空】获得",SunWuKong_shengli,"局胜利,最终【孙悟空】胜利!!!")
elif SunWuKong_shengli < BaiGuJing_shengli:\
print("【白骨精】获得",BaiGuJing_shengli,"局胜利,最终【白骨精】胜利!!!")
else:
print("【最终结果:平局!】")
以下为标准答案代码:
import time
import random
player_victory = 0
enemy_victory = 0
while True:
for i in range(1,4):
time.sleep(1.5)
print(' \n——————现在是第 %s 局——————' % i)
player_life = random.randint(100,150)
player_attack = random.randint(30,50)
enemy_life = random.randint(100,150)
enemy_attack = random.randint(30,50)
print('【玩家】\n血量:%s\n攻击:%s' % (player_life,player_attack))
print('------------------------')
time.sleep(1)
print('【敌人】\n血量:%s\n攻击:%s' % (enemy_life,enemy_attack))
print('-----------------------')
time.sleep(1)
while player_life > 0 and enemy_life > 0:
player_life = player_life - enemy_attack
enemy_life = enemy_life - player_attack
print('你发起了攻击,【玩家】剩余血量%s' % player_life)
print('敌人向你发起了攻击,【敌人】的血量剩余%s' % enemy_life)
print('-----------------------')
time.sleep(1.2)
if player_life > 0 and enemy_life <= 0:
player_victory += 1
print('敌人死翘翘了,你赢了!')
elif player_life <= 0 and enemy_life > 0:
enemy_victory += 1
print('悲催,敌人把你干掉了!')
else:
print('哎呀,你和敌人同归于尽了!')
if player_victory > enemy_victory :
time.sleep(1)
print('\n【最终结果:你赢了!】')
elif enemy_victory > player_victory:
print('\n【最终结果:你输了!】')
else:
print('\n【最终结果:平局!】')
a1 = input('要继续游戏吗,请输入n退出,输入其他继续:') # 在 while True 循环中设置跳出条件。
if a1 == 'n':
break
网友评论