美文网首页
Python笔记-再来一盘(孙悟空白骨精PK赛)练习题

Python笔记-再来一盘(孙悟空白骨精PK赛)练习题

作者: 我开心0536 | 来源:发表于2020-02-21 23:20 被阅读0次

【功能】
学习的代码:孙悟空白骨精PK赛,再来一盘练习题( python 3.7版本下调试成功)

【问题一】

  1. 孙悟空、白骨精PK赛,每人初始生命值默认100(也可以修改为初始默认值不同);
  2. 每一局多个回合,每回合攻击可给对方减少随机的生命值,直到一方生命值小于0为结束一局
  3. 共三局,局数多的为最终胜利
游戏示意图.jpg
孙悟空白骨精攻击过程截图.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

相关文章

网友评论

      本文标题:Python笔记-再来一盘(孙悟空白骨精PK赛)练习题

      本文链接:https://www.haomeiwen.com/subject/nchkqhtx.html