美文网首页
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