• python项目实战-小游戏1


    项目规则:

    1、玩家和敌人分别从现有的角色中选择3个角色

    2、随机生成目前的血量,和攻击量

    3、游戏规则:当玩家向敌人发起攻击,敌人当前的血量=之前的血量-玩家的血量,同理

    4、3局两胜

    5、自定义玩家出场的顺序和敌人出场的顺序

     

    import time,random
    
    # 需要的数据和变量放在开头
    player_list =  ['【狂血战士】','【森林箭手】','【光明骑士】','【独行剑客】','【格斗大师】','【枪弹专家】']
    enemy_list = ['【暗黑战士】','【黑暗弩手】','【暗夜骑士】','【嗜血刀客】','【首席刺客】','【陷阱之王】']
    players = random.sample(player_list,3)  #从player_list中随机选取3个
    enemies = random.sample(enemy_list,3)
    player_info = {}
    enemy_info = {}
    
    # 随机生成角色的属性
    def born_role():
        life = random.randint(100,180) #在100到180之间生成随机数,整数
        attack = random.randint(30,50)
        return life,attack
    
    # 生成和展示角色信息
    def show_role():
        for i in range(3):
            player_info[players[i]] = born_role()
            enemy_info[enemies[i]] = born_role()
        
        # 展示我方的3个角色
        print('----------------- 角色信息 -----------------')
        print('你的人物:')
        for i in range(3):
            print('%s  血量:%d  攻击:%d' 
            %(players[i],player_info[players[i]][0],player_info[players[i]][1]))
        print('--------------------------------------------')
        print('电脑敌人:')
        
        # 展示敌方的3个角色
        for i in range(3):
            print('%s  血量:%d  攻击:%d' 
            %(enemies[i],enemy_info[enemies[i]][0],enemy_info[enemies[i]][1]))
        print('--------------------------------------------')
        input('请按回车键继续。
    ')  # 为了让玩家更有控制感,可以插入类似的代码来切分游戏进程。
    
    # 角色排序,选择出场顺序。
    def order_role(): 
        global players
        order_dict = {}
        for i in range(3):
            order = int(input('你想将 %s 放在第几个上场?(输入数字1~3)'% players[i]))
            order_dict[order] = players[i]  
    
        players = []
        for i in range(1,4):
            players.append(order_dict[i]) 
        
        print('
    我方角色的出场顺序是:%s、%s、%s' %(players[0],players[1],players[2]))
        print('敌方角色的出场顺序是:%s、%s、%s' %(enemies[0],enemies[1],enemies[2]))
    
    # 角色PK
    def pk_role(): 
        round = 1  
        score = 0
        for i in range(3):  # 一共要打三局
            player_name = players[i]  
            enemy_name = enemies[i] 
            player_life = player_info[players[i]][0]
            player_attack = player_info[players[i]][1]
            enemy_life = enemy_info[enemies[i]][0]
            enemy_attack = enemy_info[enemies[i]][1]
    
            # 每一局开战前展示战斗信息
            print('
    ----------------- 【第%d局】 -----------------' % round)
            print('玩家角色:%s vs 敌方角色:%s ' %(player_name,enemy_name))  #格式化输出
            print('%s 血量:%d  攻击:%d' %(player_name,player_life,player_attack))
            print('%s 血量:%d  攻击:%d' %(enemy_name,enemy_life,enemy_attack))
            print('--------------------------------------------')
            input('请按回车键继续。
    ')
    
            # 开始判断血量是否都大于零,然后互扣血量。
            while player_life > 0 and enemy_life > 0:
                enemy_life = enemy_life - player_attack
                player_life = player_life - enemy_attack
                print('%s发起了攻击,%s剩余血量%d' % (player_name,enemy_name,enemy_life))
                print('%s发起了攻击,%s剩余血量%d' % (enemy_name,player_name,player_life))
                print('--------------------------------------------')
                time.sleep(1)
            else:  # 每局的战果展示,以及分数score和局数的变化。
                # 调用show_result()函数,打印返回元组中的result。
                print(show_result(player_life,enemy_life)[1])
                # 调用show_result()函数,完成计分变动。
                score += int(show_result(player_life,enemy_life)[0])
                round += 1
        input('
    点击回车,查看比赛的最终结果
    ')
    
        if score > 0:
            print('【最终结果:你赢了!】
    ')
        elif score < 0:
            print('【最终结果:你输了!】
    ')
        else:
            print('【最终结果:平局!】
    ')
    
    # 返回单局战果和计分法所加分数。
    def show_result(player_life,enemy_life):  # 注意:该函数要设定参数,才能判断单局战果。
        if player_life > 0 and enemy_life <= 0:
            result = '
    敌人死翘翘了,你赢了!'
            return 1,result  # 返回元组(1,'
    敌人死翘翘了,你赢了!'),类似角色属性的传递。
        elif player_life <= 0 and enemy_life > 0:        
            result = '
    悲催,敌人把你干掉了!'
            return -1,result
        else :
            result = '
    哎呀,你和敌人同归于尽了!'
            return 0,result
    
    # (主函数)展开战斗流程
    def main():
        show_role()
        order_role()
        pk_role()
    
    # 启动程序(即调用主函数)
    main()
  • 相关阅读:
    u-boot mkconfig文件分析
    uboot的lds文件分析
    gitlab webhook jenkins 403问题解决方案
    【python】将json串写入文件,并以json格式读取出来
    sqlalchemy 中 desc 的使用
    【mysql】如何通过navicat配置表与表的多对一关系,一对一关系?设计外键的效果
    【mysql】一对一关系的理解,以及Navicat Premium怎么设置字段的唯一性(UNIQUE)?
    【mysql】时间类型-如何根据不同的应用场景,选择合适的时间类型?
    Navicat Premium Mac 12 破解方法-亲测成功
    【linux】cp 批量复制文件
  • 原文地址:https://www.cnblogs.com/mml-blog/p/10584025.html
Copyright © 2020-2023  润新知