Pygame Zero(pgzrun)游戏库介绍

Pygame Zero(pgzrun)游戏库介绍

pgzero是python的一个第三方库。pgzrun 是 python game zero run 的缩写, 它对 Pygame 进行了封装, 屏蔽了繁琐枯燥的框架代码, 让学习者可以更专注于游戏的实现逻辑, 并且更快看到成果。

官网https://pygame-zero.readthedocs.io/en/stable/

中文https://pygame-zero.readthedocs.io/zh_CN/latest/introduction.html

pgzrun库的安装与导入

安装Pygame Zero(pgzrun)之前需要先安装Pygame,因为Pygame Zero是基于Pygame开发的一个简化框架。

特别提醒一下,pgzrun模块(库)安装的时候,名称用pgzero,在cmd中输入

pip install pgzero

回车

【关于安装安装第三方库的更多情况,可参见:https://blog.csdn.net/cnds123/article/details/104393385】

导入的时候用pgzrun

import pgzrun

pgzrun库使用基础

坐标系

以左上角为原点 ( 0, 0 )

项目的目录一般如下图所示:

images/ 目录是Pygame Zero查找代码中图片的标准默认目录。

music/ 是 Pygame Zero 查找音乐文件的默认标准目录。

sounds/ 是 Pygame Zero 查找声音文件的默认标准目录。

Pygame Zero支持的图片格式

.png

.jpg

.gif

推荐使用 png 类型, 因为这种类型支持透明背景。

音乐文件:音乐文件通常是指较长时长的音频剪辑,如歌曲、乐曲等,用于背景音乐、配乐或其他需要长时间播放的场合。常用的格式:

MP3 (.mp3)

OGG (.ogg)

WAV (.wav)

声音文件:声音文件通常是指短时的音频片段,如音效、声效等,用于游戏、动画、影视等中的特定声音效果,如打击声、爆炸声、脚步声等各种效果音。声音文件相对较短,通常以较低的比特率进行编码,以节省存储空间和加载时间。常用的格式:

WAV (.wav)

OGG (.ogg)

特别提示,将资源文件(Resource Files,如音乐文件、声音文件、图片)与代码文件放置在同一目录下,或标准默认位置,这样可以直接使用文件名即可。但你也可以将资源文件选择在其他位置存储图片和声音文件,只需在代码中提供正确的文件路径即可。

无论是将资源文件与代码文件放置在同一目录下、默认位置还是其他位置,重要的是确保代码中使用的文件路径与实际的文件位置匹配。这样,Pygame Zero 就能正确加载和使用你想要的资源。

Pygame Zero定义了一些其他固定名称的函数,用于处理特定的游戏事件或执行其他功能。你可以根据需要在你的代码中实现这些函数,以便响应相应的事件。以下是一些常用的固定函数名称:

draw():这个函数用于绘制游戏场景。你可以在这个函数中使用 Pygame 的绘图函数来绘制图像、文本和等,并将它们显示在屏幕上。

update():这个函数用于更新游戏逻辑和状态。你可以在这个函数中实现游戏中各种元素的移动、碰撞检测、状态变化等更新操作。

on_key_down(key):这个函数在用户按下某个键时被调用。你可以根据不同的键来执行相应的操作,例如移动角色、触发事件等。key参数表示被按下的键的名称。

on_key_up(key):这个函数在用户释放某个键时被调用。你可以根据需要对键释放事件作出响应,例如停止角色移动等。key参数表示被按下的键的名称。

on_mouse_down(pos, button):这个函数在用户按下鼠标按钮时被调用。你可以检测按钮的位置,然后执行相应的操作,如捕获点击事件、进行拖动等。button参数表示释放的鼠标按钮的名称,pos参数表示释放发生的位置。

on_mouse_up(pos, button):这个函数在用户释放鼠标按钮时被调用。你可以根据需要对鼠标松开事件做出响应,如停止拖动等。button参数表示释放的鼠标按钮的名称,pos参数表示释放发生的位置。

on_mouse_move(pos, rel, buttons):当鼠标移动时调用。pos参数表示当前鼠标位置,rel参数表示相对于上次移动的位置变化,buttons参数表示当前按下的鼠标按钮的状态。

on_quit():当关闭游戏窗口时调用。

示例

pgzero设计游戏一般步骤

1.导入pgzrun。

2.定义游戏场景和角色:在游戏开始之前,你需要定义游戏的场景和角色。这包括创建屏幕、背景图像、精灵(Sprites)和其他游戏元素。

3.编写游戏逻辑:在游戏中,你需要编写处理用户输入、更新游戏状态和绘制游戏场景的逻辑代码。这可能涉及到键盘或鼠标事件的处理、碰撞检测、移动精灵等。

4.启动游戏循环:使用pgzrun.go()来启动游戏循环。这将负责处理游戏的主要逻辑,并根据每个帧更新游戏状态和绘制场景。

下面给出一个简单的例子,

文件结构如下:

音乐文件自己找一个吧,我这里是my_music.mp3。

源码如下:

import pgzrunTITLE = "pgzrun示例" #设置窗口顶部的标题
WIDTH = 400
HEIGHT = 300alien = Actor("player.png")
alien.pos = (WIDTH // 2, HEIGHT // 2)def on_key_down(key):if key == keys.SPACE:play_sound()def draw():screen.clear()screen.blit("background.jpg", (0, 0)) #添加背景图片alien.draw()def update():pass  # 游戏逻辑更新def play_sound():    music.play("music.mp3")  # 替换为你的音乐文件路径pgzrun.go()

运行之,效果如下:

上面示例中,首先导入了 pgzrun 模块并设置了游戏窗口的宽度和高度。然后我们定义了一个名为 " player.png " 的角色,并将其初始位置设定在屏幕中央。我们还定义了一个 sound 变量用于存储音效,在 play_sound() 函数中,当用户按下空格键时,播放音效。

Pygame Zero中,通常会在脚本开头定义WIDTH和HEIGHT来设置窗口的宽度和高度,以及TITLE来设置窗口的标题。需要大写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/9371.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.Net Core Web API快速搭建后台服务搭载SQLServer+FreeSQL(一)

目录 一.建立WebAPI所需要的环境 1. IDE编辑器:VisualStudio2019 2.数据库安装:SqlServer 3.下载SQL Server Management Studio (SSMS) 二.创建ASP.Net Core Web API工程 1.创建模板工程 2. 试运行案例接口 3.安装FreeSQL工具包 三.设计数据库 启…

【MySQL】不允许你不了解联结表

🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指…

“生鲜蔬”APP的设计与实现

1.引言 在这个科技与网络齐头并进的时代,外卖服务正在飞速发展,人们对外卖APP系统功能需求越来越多,开发APP的人员对自己的要求也要越来越高,要从所做APP外卖系统所实现的功能和用户的需求来对系统进行设计,还需要与当…

python3开发-Word助手

目录 背景 思路 步骤 代码示例 总结 背景 在日常工作和学习中,我们经常需要处理Word文档,例如编辑、提取内容、生成报告等。而Python是一门功能强大的编程语言,它提供了丰富的库和工具,使得我们可以利用Python来处理Word文档…

Git无法上传删除 Commit里面有大文件

1.Bug描述 因为在一次提交中不小心把一个打包的aab文件弄到commit文件里了,于是在上传的时候push rejected 了。 因为GitHub的文件上限是100M,但是打的包太大了,有170M,所以是不能上传的,但是又是已经在Commit历史中了…

从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史

Bert最近很火,应该是最近最火爆的AI进展,网上的评价很高,那么Bert值得这么高的评价吗?我个人判断是值得。那为什么会有这么高的评价呢?是因为它有重大的理论或者模型创新吗?其实并没有,从模型创新角度看一般,创新不算大。但是架不住效果太好了,基本刷新了很多NLP的任务…

Postman中读取外部文件

目录 前言: 一、postman中读取外部文件的格式 二、Postman中如何导入文件 三、在Postman读取导入的数据文件 前言: 在Postman中,您可以使用"数据文件"功能来读取外部文件,如CSV、JSON或Excel文件。这使得在测试中使用…

深度学习编译器汇总

深度学习的发展对个科学领域产生了深远的影响。它不仅在自然语言处理(NLP)和计算机视觉(CV)等人工智能领域显示出显著的价值,而且在电子商务、智慧城市和药物发现等更广泛的应用领域也取得了巨大的成功。随着卷积神经网…

ch0_汇编介绍

学习参考: https://helijian.blog.csdn.net/article/details/60885095 参考贺利坚老师的汇编课程 1. 汇编作用 1.1 汇编是所有语言的老祖宗 1.2 不可替代的使用场景 汇编语言仍在发挥不可替代的作用: 效率 . 运行效率:开发软件的核心部件,快速执行和实…

【MySQL高级篇笔记-数据库的设计规范(中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、为什么要数据库设计 二、范式 1、范式简介 2、范式都包括哪些 3、键和相关属性的概念 4、第一范式(1st NF) 5、第二范式(2nd NF) 6、第三范式(3rd NF) 7、小结 三、反范式化 1、概述 2、 应用举例 3、反范式的新问…

split()分割字符串【JavaScript】

分割字符串 在JavaScript中,我们可以使用split( )方法把一个字符串分割成一个数组, 这个数组存放的是原来字符串的所有字符片段。 有多少个片段,数组元素个数就是多少。 语法 字符串名.split("分割…

【Vue3】学习笔记-shallowReactive与ShallowRef

shallowReactive:只处理对象最外层属性的响应式(浅响应式)。 shallowRef:只处理基本数据类型的响应式, 不进行对象的响应式处理。 什么时候使用? 如果有一个对象数据,结构比较深, 但变化时只是外层属性变化 > sh…