当前位置:

首页 > 编程开发 > Python编程实现高级版王者荣耀小游戏

Python编程实现高级版王者荣耀小游戏

效果展示必备素材主要代码导入模块importpygameimportos.pathimportcsvimportsettingassetimportliveimportgame_eventimportgameuiasgiimportstartupuiassi程序主函数defrun_game():#初始化pygame库pygame.init()#创建时钟对象(控制帧率)clock=pygame.time.Clock()#实例化设置类,用于导入游戏设置setting=set.Setting()#设置游戏窗口s

本文目录

    效果展示

    Python编程实现高级版王者荣耀小游戏

    必备素材

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    Python编程实现高级版王者荣耀小游戏

    主要代码

    导入模块

    import pygame
    import os.path
    import csv
    import setting as set
    import live
    import game_event
    import gameui as gi
    import startupui as si

    程序主函数

    def run_game():
        #初始化pygame库
        pygame.init()
        #创建时钟对象(控制帧率)
        clock=pygame.time.Clock()
        #实例化设置类,用于导入游戏设置
        setting=set.Setting()
        #设置游戏窗口
        screen=pygame.display.set_mode((setting.screen_width,setting.screen_height))
        pygame.display.set_caption(setting.screen_caption)

    设置不同的组,用于分别处理各种物品间的关系

    #玩家组
    group_player=pygame.sprite.Group()
    #玩家的攻击组
    group_attack=pygame.sprite.Group()
    #敌人组
    group_enemy=pygame.sprite.Group()
    #敌人的攻击组
    group_enemy_attack=pygame.sprite.Group()

    实例化ui对象

        #showinfo用于在游戏内显示人物血条等信息
        showinfo=gi.Info(setting,screen)
        #人物选择按钮
        yi_button=si.MonkeyKingButton(screen,setting)
        monkey_button=si.YiButton(screen,setting)
        fox_button=si.FoxButton(screen,setting)
        bin_button=si.BinButton(screen,setting)

    游戏开始界面的按钮

        pve_button=si.PVEButton(screen,setting)
        pvp_button=si.PVPButton(screen,setting)
        endless_button=si.EndlessButton(screen,setting)
        control_button=si.ControlButton(screen,setting)
        memory_button=si.RecordButton(screen,setting)
        cooling_button=si.CoolingButton(screen,setting)

    游戏背景

        select_button=si.SelectButton(screen,setting)
        win_button=si.WinButton(screen,setting)
        dead_button=si.DeadButton(screen,setting)

    玩家当前选择的人物标记

        player_button_1=si.PlayerButton1(screen,setting)
        player_button_2=si.PlayerButton2(screen,setting)
        #空白按钮
        none_button=si.NoneButton(screen,setting)
        #空白图像
        none_info=gi.ExInfo(screen,none_button,setting.introduce_none)

    介绍按钮作用的图像

        pve_info=gi.ExInfo(screen,pve_button,setting.introduce_pve)
        pvp_info=gi.ExInfo(screen,pvp_button,setting.introduce_pvp)
        endless_info=gi.ExInfo(screen,endless_button,setting.introduce_endless)
        control_info=gi.ExInfo(screen,control_button,setting.introduce_control)
        record_info=gi.ExInfo(screen,memory_button,setting.introduce_record)
        cooling_info=gi.ExInfo(screen,cooling_button,setting.introduce_cooling)

    按钮组(绘制时,在前的按钮会被在后的按钮覆盖)

        buttons=[select_button,yi_button,monkey_button,fox_button,bin_button,
                 pve_button,pvp_button,endless_button,
                 cooling_button,control_button,memory_button,
                 dead_button,win_button]

    标签按钮组

        choose_buttons=[player_button_1,player_button_2]

    介绍按钮作用的图像组

        button_info_dict={none_button:none_info,pve_button:pve_info,pvp_button:pvp_info,
                          endless_button:endless_info,control_button:control_info,
                          memory_button:record_info,cooling_button:cooling_info}
        #当前显示的图像列表
        info_label=[]
        #存储模拟刚体运动的列表
        rigidbody_list=[]
        #玩家实例,初始化为战士
        player_1=live.MonkeyKing(setting,screen)
        player_2=live.MonkeyKing(setting,screen)
    
        if not os.path.exists(setting.record_path):
            #如果游戏记录文件不存在就新创建一个
            with open(setting.record_path,'w',newline="") as f:
                writer=csv.writer(f)
                header=["Time","Mode","Winner","1st Score","2st Score","Duration(s)","1st Player","2nd Player","isCooling"]
                writer.writerow(header)

    游戏主循环

        while True: 
            #绘制背景
            screen.blit(setting.screen_surface_background,(0,0))
            #设置游戏帧率
            clock.tick(setting.fps)
            #检测键盘鼠标事件   
            game_event.check_event(setting,screen,group_player,group_attack,group_enemy,
                                   group_enemy_attack,buttons,showinfo,button_info_dict,info_label)

    更新当前选择人物的标签

            game_event.update_choose(setting,buttons,choose_buttons)

    游戏运行,非玩家对抗模式

            if (setting.game_active and (setting.game_mode==0 or setting.game_mode==2)):

    人物初始化

                if(not setting.isinit):
                    if setting.player_1!=None:
                        player_1=setting.player_1
                        group_player.add(player_1)
                    if setting.player_2!=None:
                        player_2=setting.player_2
                        group_player.add(player_2)                
                    setting.isinit=True
                #游戏计时器
                setting.timer+=1
                #更新玩家
                group_player.update()
                #生成敌人
                game_event.generate_enemies(setting,group_enemy,screen)

    更新敌人,玩家的攻击,敌人的攻击,玩家状态等

    game_event.update_enemies(setting,showinfo,screen,group_player,group_enemy,group_attack,group_enemy_attack)
                game_event.update_attacks(setting,screen,group_attack,group_enemy,rigidbody_list)
                game_event.update_enemy_attacks(setting,screen,group_player,group_enemy_attack,rigidbody_list)
                game_event.update_state(setting,showinfo)
                game_event.update_rigidbody(setting,rigidbody_list)

    胜利条件

                if setting.timer>=60*setting.fps and not group_enemy.spritedict and setting.game_mode==0:
                    game_event.game_win(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                    setting.timer=0

    失败条件

                if setting.isinit and ((setting.player_1!=None and setting.health_1<=0) or (setting.player_2!=None and setting.health_2<=0)):              
                    game_event.game_dead(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                    setting.timer=0

    玩家对抗模式

            elif setting.game_active and setting.game_mode==1:

    人物初始化

                if(not setting.isinit):
                    if setting.player_1!=None and setting.player_2!=None:
                        player_1=setting.player_1
                        group_player.add(player_1)
                        player_2=setting.player_2
                        group_player.add(player_2)                        
                        setting.isinit=True

    游戏计时器

    setting.timer+=1

    更新玩家

                player_1.update()
                player_2.update()

    更新玩家的攻击,信息显示和物理模拟

    game_event.update_attacks_pvp(setting,screen,group_attack,rigidbody_list)
                game_event.update_state(setting,showinfo)
                game_event.update_rigidbody(setting,rigidbody_list)

    玩家1胜利条件

                if setting.isinit and setting.health_2<=0:
                    setting.score_1+=1
                    game_event.game_win(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                    setting.timer=0

    玩家2胜利条件

                if setting.isinit and setting.health_1<=0:
                    setting.score_2+=1
                    game_event.game_win(setting,showinfo,group_enemy,group_attack,group_enemy_attack)
                    setting.timer=0

    根据上述更新的结果绘制整个游戏窗口

            game_event.update_screen(setting,screen,group_player,group_attack,group_enemy,group_enemy_attack,
                                     showinfo,buttons,info_label,choose_buttons)                 
    
    #运行游戏
    run_game()
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。