Pygame Zero(pgzrun)详解(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)

简介: Pygame Zero(pgzrun)详解(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)

零、时光宝盒

逆境清醒时光宝盒

逆境清醒:https://blog.csdn.net/weixin_69553582

今天是2025年1月1日,

在新的一年里,
愿你心如阳光,明媚不忧伤。
愿你心如月光,恬淡不清冷也不心伤。
愿你身体健康,快乐无烦恼。
愿你梦里幸福笑,如意直到老。
愿你被时光温柔笼罩,幸运女神偏偏宠爱你。
开心、健康、平安、好运、幸福、顺利、有钱、又闲。。。
所求皆如愿,所行皆坦途,
多喜乐,长安宁,愿守护精灵坚定地留在你身旁!!!
愿你的一切美好都会在新的一年发生!!!

虽然我并不算真的认识你们,
你们也不知道我到底是谁,
但这份祝福是发自肺腑,
钻石般坚定的!
因为我知道现在社会正在发生什么。。。

逆境清醒
2025.1.1

此文地址:https://blog.csdn.net/weixin\_69553582/article/details/144864025

7f8eafc867aa425cab7d368ee0eb4dd8.gif

d236be8efbf74686907ed136ae074eac.png

一、Pygame Zero简介

Pygame Zero(pgzrun)是一个用于创建简单的2D游戏的Python库。它是基于Pygame库开发的,旨在简化游戏开发的流程,特别适合初学者和快速原型设计。

Pygame Zero是建立在Pygame库之上的,是一个基于Pygame的简化游戏框架,旨在帮助初学者快速入门游戏开发。它封装了Pygame的一些复杂性,使得开发者可以更快速、更容易地开发游戏,而无需处理Pygame的一些底层细节。Pygame Zero是Python编程语言中的一个模块,提供了一种简化的方式来创建游戏和交互式应用程序。

对于没有编程经验的人来说。Pygame Zero的目标是通过封装一些常见的游戏开发任务和提供一些简化的API,使游戏开发变得更加容易和有趣。Pygame Zero为初学者提供了一个简单直观的游戏开发环境,使得他们能够快速上手,快速实现自己的游戏创意。同时,对于有经验的开发者,Pygame Zero也提供了一些有用的功能和工具,用于快速原型设计和快速迭代。

Pygame Zero的主要特点:

1. 简化的绘图:Pygame Zero提供了一些简单的绘图函数,如绘制矩形、圆圈和文本等。这些函数使绘图变得容易,无需了解复杂的Pygame绘图API。

2. 内置的游戏循环:Pygame Zero自动处理游戏循环,包括事件处理、更新游戏状态和绘制场景等。Pygame Zero会自动创建一个主循环来处理游戏逻辑和渲染。你只需要实现一些回调函数,例如,你可以编写名为update()的函数来处理游戏逻辑,每帧都会被调用。另外,你还可以编写名为draw()的函数来处理渲染,也会每帧被调用。

3. 简化的输入处理:Pygame Zero处理键盘和鼠标输入,并提供了一些简单的函数来检测按键和鼠标事件。你可以轻松地检测玩家的输入并作出相应的反应。你可以根据需要编写事件处理函数,在用户触发事件时执行相应的操作。

4. 物理引擎支持:Pygame Zero集成了物理引擎pymunk,使得处理物理碰撞和运动变得更加容易。你可以创建物理对象,设置其属性,然后让它与其他对象交互。

5. 简化的语法:Pygame Zero通过提供一些简化的语法,使得编写游戏代码更加简单易懂。例如,你可以使用Actor()类来创建可移动的游戏对象,使用.pos属性来获取或设置对象的位置,使用.colliderect()函数来检测对象之间的碰撞等。

二、Pygame Zero的编写游戏的一般流程

3918b8ff5b6b44adaff18380cf25c4d2.png

使用Pygame Zero编写游戏的一般流程是:

  1. 安装:可以使用pip命令来安装Pygame Zero库。在命令行中输入pip install pgzero即可安装。
  2. 导入Pygame Zero模块:import pgzrun 或者 from pgzrun import *
  3. 初始化:设置游戏窗口的宽度和高度等参数,例如:WIDTH = 800; HEIGHT = 600
  4. 在draw()函数中绘制游戏场景,例如绘制背景、角色等。
  5. 在update()函数中更新游戏状态,例如检测输入、移动角色等。
  6. 调用Pygame Zero的主循环函数:pgzrun.go()

三、Pygame Zero 的坐标系

18c90f733f444377b574cb2984583553.png

Pygame Zero 的坐标系以左上角为原点 ( 0, 0 )
游戏窗口的绘制区域采用直角坐标系,左上角的坐标为(0,0)。
横轴方向由x坐标表示,取值范围为0到最大横坐标,例如x=800;
纵轴方向由y坐标表示,取值范围为0到最大纵坐标,例如y=600。
游戏窗口中任一点的位置可由其(x,y)坐标表示。

四、Pygame Zero项目的目录

Pygame Zero项目的目录一般如下:

Pygame Zero项目

├──music/
│ └── 音乐文件,支持的格式:MP3 (.mp3)、OGG (.ogg)、WAV (.wav)

├── sounds/
│ └── 声音文件,支持的格式:WAV (.wav)、OGG (.ogg)


├── images/
│ └── 图片文件,支持的图片格式:.png、.jpg、.gif


└── python文件

规定的目录说明:

images/ 图片文件目录:

是Pygame Zero查找代码中图片的标准默认目录。支持的图片格式:.png、.jpg、.gif

sounds/ 声音文件目录:

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

声音文件通常是指短时的音频片段,如音效、声效等,

在与程序文件同一根目录下名为sounds的文件夹放下需要的音乐( WAV (.wav)、OGG (.ogg)格式),

在程序中用
sounds.音乐名(英文且不带后缀名).play()

sounds.音乐名(英文且不带后缀名).play()
AI 代码解读

效果:只播放一次此音乐

music/ 音乐文件目录:

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

音乐文件通常是指较长时长的音频剪辑,如歌曲、乐曲等,用于背景音乐。

在与程序文件同一根目录下名为music的文件夹放下您想播放的音乐(MP3 (.mp3)、OGG (.ogg)、WAV (.wav))

在程序中用

music.play('音乐名不带后缀名')

music.play('音乐名不带后缀名')
AI 代码解读

效果:一直重复播放此音乐

五、Pygame Zero的语法参数

5.1、设置窗口的标题

在Pgzero中,用TITLE来设置窗口的标题。需要大写。例如:


TITLE = "逆境清醒编程用法示例pgzrun" # 设置窗口顶部的标题
AI 代码解读

5.2、设置窗口的大小

Pgzero中,通过两个常量值(WIDTH和HEGIHT,指场景的宽和高)来确定程序运行窗口的大小。例如:


WIDTH = 300
HEIGHT = 300
AI 代码解读

5.3、创建角色

Pgzero中生成一个游戏角色十分简单,只需一行代码即可。

Actor类是Pgzero库提供的角色类,调用该类的构造方法并传入角色图片和位置便可生成一个角色对象。

<变量> =Actor("str", (x, y))    #生成一个游戏角色,导入一个名为str图片
AI 代码解读

Actor类的构造方法有两个基本参数:

  • 第一个参数是角色的图片文件名,角色图片可以调用的图片格式是.jpg、.png、.gif,调用图片文件时无需扩展名,
  • 第二个参数是角色的初始位置坐标。

例如:

alien = Actor("jingling00.png",(100,100))
AI 代码解读

5.4、内置对象

Pgzreo提供了很多的内置对象,以便进行各项操作。

screen对象表示您的游戏屏幕。

它可让您轻松地将图像绘制到屏幕上(“blit”它们)。主要用来在程序运行窗口进行绘制图形和图像及文字信息等,在游戏编程中经常会用到screen对象提供的很多的绘制方法。

Screen类内置对象

方法 作用
1 surface 表示屏幕缓冲区的原始 Pygame 表面。您可以将其用于高级图形操作。
2 clear() 将屏幕重置为黑色。
3 fill((red, green, blue)) fill((红、绿、蓝))用纯色填充屏幕。
4 blit(image, (left, top)) 将图像绘制到给定位置的屏幕上。blit(图像,(左,上)),将图像绘制到屏幕上的给定位置。blit()接受Surface或字符串作为其图像参数。如果image是str,则将从images/目录加载命名的image。
5 draw.line(start, end, (r, g, b)) draw.line(开始、结束、(红、绿、蓝)),从头到尾画一条线。
6 draw.circle(pos, radius, (r, g, b)) draw.circle(位置、半径、(红、绿、蓝)),绘制圆的轮廓。
7 draw.filled_circle(pos, radius, (r, g, b)) draw.filled_circle(位置、半径、(红、绿、蓝)),绘制一个实心圆。
8 draw.rect(rect, (r, g, b)) draw.rect(矩形,(红、绿、蓝))绘制矩形的轮廓。
9 draw.filled_rect(rect, (r, g, b)) draw.filled_rect(矩形,(红、绿、蓝))绘制一个填充矩形。
10 draw.text(text, [pos, ]**kwargs) draw.text(文本, [pos, ]**kwargs)绘制文本。
11 raw.textbox(text, rect, **kwargs) draw.textbox(文本、矩形、**kwargs),绘制文本,调整大小以填充给定的 Rect。

六、Pygame Zero常用的固定函数

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

以下是一些常用的固定函数名称:

固定函数 :

方法 作用
1 draw(): Pgzero库自带函数,它可以显示各种图形或图像,它是Pygame、Pygame Zero库约定好的函数,这个函数用于绘制游戏场景。 可以在这个函数中使用 Pygame 的绘图函数来绘制图像、文本和等,并将它们显示在屏幕上。 程序运行以后,会被自动执行。 所有绘制角色的代码,都需要写在这个函数中。 用户可以在程序中将自己的代码定义在draw( )函数内。
2 update() update()函数是Pygame zero库自带的函数,每秒自动运行60次用以不断更新游戏,程序运行以后,会被自动执行。 这个函数用于更新游戏逻辑和状态。 可以在这个函数中实现游戏中各种元素的移动、碰撞检测、状态变化等更新操作。 所有更新游戏场景、游戏角色的代码,所有对角色对象操作的代码都要写在update()函数中。
3 on_mouse_down(pos, button) 这个函数在用户按下鼠标按钮时被调用。你可以检测按钮的位置,然后执行相应的操作,如捕获点击事件、进行拖动等。button参数表示释放的鼠标按钮的名称,pos参数表示释放发生的位置。
4 on_mouse_up(pos, button) 这个函数在用户释放鼠标按钮时被调用。 可以根据需要对鼠标松开事件做出响应,如停止拖动等。 button参数表示释放的鼠标按钮的名称, pos参数表示释放发生的位置。
5 on_mouse_move(pos, rel, buttons) 当鼠标移动时调用。 pos参数表示当前鼠标位置, rel参数表示相对于上次移动的位置变化, buttons参数表示当前按下的鼠标按钮的状态。
6 on_key_down(key) 这个函数在用户按下某个键时被调用。你可以根据不同的键来执行相应的操作,例如移动角色、触发事件等。key参数表示被按下的键的名称。
7 on_key_up(key) 这个函数在用户释放某个键时被调用。你可以根据需要对键释放事件作出响应,例如停止角色移动等。key参数表示被按下的键的名称。
8 on_quit() 当关闭游戏窗口时调用。

七、pygame zero安装验证:

7.1、首先,必须先安装 pygame

Pip install pygame
AI 代码解读

7.2、最后,安装pygame zero:

pip install pgzero
AI 代码解读

7.3、验证

首先,创建一个名为 intro.py的空白python文件

在命令行通过运行

pgzrun intro.py
AI 代码解读

运行结果:

弹出一个黑色的空白窗口

c8785f6ac4fb49ab9c6dbf949cace9af.png

说明pygame zero安装成功

八、pygame zero实例(飘动的小精灵)

简单例子,一个小精灵在空中飘动。

先看效果图(gif):

ced2b7a9fd4e4b43b22e594ede8892eb.gif

8.1、安装python和相关的库

先安装好python和相关的库(pygame、pygame zero)

Pip install pygame
pip install pgzero
AI 代码解读

8.2、建立python文件njqx.py

新建立python文件,文件名:njqx.py(你可以换成你喜欢的文件名.py)

8.3、导入库

import pgzrun
AI 代码解读

8.4、下载保存好素材

准备好素材,保存到指定的目录中,

本例子中,如果你想得到和我一样的效果,

下载我提供的素材(素材版权是我的),

保存图片时所起的名字一定要按我下文中所列出的一样,

同时保存图片的位置也不能改变任何。

在njqx.py所在的位置,新建立一个 images 目录,

素材1:

1fdf8fbccb3244238d7f4488585218d9.png

将素材1保存在images目录中,名字为:njqx00_bg.png

素材2:

3f14880b7905495782c126e16515cd88.png

将素材2保存在images目录中,名字为:njqx00.png

8.5、项目的目录

飘动的小精灵目录结构

├── images/
│ └── njqx00_bg.png
│ └── njqx00.png

└── njqx.py

8.6、初始化

在njqx.py文件中新增代码如下:

"""
=================================================
@Project ->Adversity Awake python游戏系列
@类别 : pygame->pgzrun
@Author : 逆境清醒
@Date : 2025/1/1
@Desc :https://blog.csdn.net/weixin_69553582
原文链接:https://blog.csdn.net/weixin_69553582/article/details/144864025
=================================================
"""
TITLE = "逆境清醒编程用法示例pgzrun"
jingling = Actor('njqx00')
jingling.pos = 150, 110
WIDTH = 350
HEIGHT = jingling.height + 80
AI 代码解读

8.7、绘制场景

在njqx.py文件中新增代码如下:

def draw():
    screen.clear()
    screen.blit("njqx00_bg.png", (0, 0))  
    jingling.draw()
AI 代码解读

8.8、设定更新内容

在njqx.py文件中新增代码如下:

def update():
    jingling.left += 2
    if jingling.left > WIDTH:
        jingling.right = 0
AI 代码解读

8.9、增加主循环

pgzrun.go()
AI 代码解读

8.10、运行代码

运行njqx.py

效果如下:

ced2b7a9fd4e4b43b22e594ede8892eb.gif

8.11、完整代码

import pgzrun
import time
"""
=================================================
@Project ->Adversity Awake python游戏系列
@类别     : pygame->pgzrun
@Author  : 逆境清醒
@Date    : 2025/1/1
@Desc    :https://blog.csdn.net/weixin_69553582
原文链接:https://blog.csdn.net/weixin_69553582/article/details/144864025
=================================================
"""
TITLE = "逆境清醒编程用法示例pgzrun"
jingling = Actor('njqx00')
jingling.pos = 150, 110
WIDTH = 350
HEIGHT = jingling.height + 80

def draw():
    screen.clear()
    screen.blit("njqx00_bg.png", (0, 0)) 
    jingling.draw()

def update():
    jingling.left += 2
    if jingling.left > WIDTH:
        jingling.right = 0

pgzrun.go()
AI 代码解读

本系列Pygame Zero(pgzrun)文章:

1、Pygame Zero(pgzrun)详解(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)

2、让我们一起用Pygame Zero 画圆形(空心圆圈、实心圆、多个小球、多层同心圆、随机颜色同心圆、有渐变效果填充圆)

3、用Pygame Zero 画矩形(空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果)

相关文章
在Mac 上搭建Pygame开发环境(含安装错误的解决办法)
在Mac 上搭建Pygame开发环境(含安装错误的解决办法)
|
8天前
|
用Pygame Zero 画矩形 (空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果)
用Pygame Zero 画矩形 (空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果)
62 40
|
8天前
|
让我们一起用Pygame Zero 画圆形 (空心圆圈、实心圆、多个小球、多层同心圆、随机颜色同心圆、有渐变效果填充圆)
让我们一起用Pygame Zero 画圆形 (空心圆圈、实心圆、多个小球、多层同心圆、随机颜色同心圆、有渐变效果填充圆)
55 31
在VS2022上安装pygame模块
【10月更文挑战第4天】这是在VS2022中安装Pygame模块的步骤:首先确认已安装Python环境,并通过“工具”-&gt;“Python”-&gt;“Python环境”进行检查;接着打开VS2022集成终端;然后输入`pip install pygame`安装Pygame;最后,在Python脚本中导入Pygame验证安装是否成功。如遇问题,请检查网络连接、权限及Python环境配置。对于权限问题,需以管理员身份运行命令提示符或终端。某些系统可能需要安装额外的系统级依赖项。
113 5
anaconda和pycharm中安装pygame(最简单)
anaconda和pycharm中安装pygame(最简单)
998 0
anaconda和pycharm中安装pygame(最简单)
Windows安装pip和pygame详细教程(附国内下载地址)
Windows安装pip和pygame详细教程(附国内下载地址)
547 0
python怎么安装第三方库,python国内镜像源,终于找到最全的安装教程啦;如Requests,Scrapy,NumPy,matplotlib,Pygame,Pyglet,Tkinter
python怎么安装第三方库,python国内镜像源,终于找到最全的安装教程啦;如Requests,Scrapy,NumPy,matplotlib,Pygame,Pyglet,Tkinter
1601 0
在 windows系统中安装 Pygame 详细过程
在 windows系统中安装 Pygame 详细过程
336 0
在 windows系统中安装 Pygame 详细过程
python安装pygame------我的是python3.8.1,电脑64位机
python安装pygame------我的是python3.8.1,电脑64位机
323 0
python安装pygame------我的是python3.8.1,电脑64位机
最详细python安装库的方法(以安装pygame库为例)
最详细python安装库的方法(以安装pygame库为例)
281 0
最详细python安装库的方法(以安装pygame库为例)

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等