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来设置窗口的标题。需要大写。