Pygame Zero(pgzrun)详解
(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)
本文目录:
零、时光宝盒
一、Pygame Zero简介
二、Pygame Zero的编写游戏的一般流程
三、Pygame Zero 的坐标系
四、Pygame Zero项目的目录
五、Pygame Zero的语法参数
六、Pygame Zero常用的固定函数
七、Pygame Zero(pgzrun)安装
八、pygame zero实例(飘动的小精灵)
零、时光宝盒
逆境清醒:https://blog.csdn.net/weixin_69553582
今天是2025年1月1日,
在新的一年里,
愿你心如阳光,明媚不忧伤。
愿你心如月光,恬淡不清冷。
愿你身体健康,快乐无烦恼。
愿你梦里幸福笑,如意直到老。
愿你被时光温柔笼罩,幸运女神偏偏宠着你。
开心、健康、平安、好运、幸福、顺利、有钱、又闲。。。
所求皆如愿,所行皆坦途,
多喜乐,长安宁,愿守护精灵坚定地留在你身旁!!!
愿你的一切美好都会在新的一年发生!!!
虽然我并不算真的认识你们,你们也不知道我是谁,
但这份祝福是发自肺腑,钻石般坚定的!
如果有一天你们知道我,就会明白这一切。
太多假冒我的,甚至我文章边写边被人通过特殊手段潜入我电脑,将我的文章和代码拷贝在其他人那里提前发布,而我这边被通过某种特殊手段强行隔断。。。。。很多事情我没有证据,但我很清楚发生了,所以,我才特别希望同样经历类似这些的你们能够在新的一年过得好一点。
逆境清醒
2025.1.1
此文地址:https://blog.csdn.net/weixin_69553582/article/details/144864025
一、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的编写游戏的一般流程
使用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 的坐标系
Pygame Zero 的坐标系以左上角为原点 ( 0, 0 )
四、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()
效果:只播放一次此音乐
music/ 音乐文件目录:
是 Pygame Zero 查找音乐文件的默认标准目录。
音乐文件通常是指较长时长的音频剪辑,如歌曲、乐曲等,用于背景音乐。
在与程序文件同一根目录下名为music的文件夹放下您想播放的音乐(MP3 (.mp3)、OGG (.ogg)、WAV (.wav))
在程序中用
music.play('音乐名不带后缀名')
music.play('音乐名不带后缀名')
效果:一直重复播放此音乐
五、Pygame Zero的语法参数
5.1、设置窗口的标题
在Pgzero中,用TITLE来设置窗口的标题。需要大写。例如:
TITLE = "逆境清醒编程用法示例pgzrun" # 设置窗口顶部的标题
5.2、设置窗口的大小
Pgzero中,通过两个常量值(WIDTH和HEGIHT,指场景的宽和高)来确定程序运行窗口的大小。例如:
WIDTH = 300
HEIGHT = 300
5.3、创建角色
Pgzero中生成一个游戏角色十分简单,只需一行代码即可。
Actor类是Pgzero库提供的角色类,调用该类的构造方法并传入角色图片和位置便可生成一个角色对象。
<变量> =Actor("str", (x, y)) #生成一个游戏角色,导入一个名为str图片
Actor类的构造方法有两个基本参数:
- 第一个参数是角色的图片文件名,角色图片可以调用的图片格式是.jpg、.png、.gif,调用图片文件时无需扩展名,
- 第二个参数是角色的初始位置坐标。
例如:
alien = Actor("jingling00.png",(100,100))
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
7.2、最后,安装pygame zero:
pip install pgzero
7.3、验证
首先,创建一个名为 intro.py的空白python文件
在命令行通过运行
pgzrun intro.py
运行结果:
弹出一个黑色的空白窗口
说明pygame zero安装成功
八、pygame zero实例(飘动的小精灵)
简单例子,一个小精灵在空中飘动。
先看效果图(gif):
8.1、安装python和相关的库
先安装好python和相关的库(pygame、pygame zero)
Pip install pygame
pip install pgzero
8.2、建立python文件njqx.py
新建立python文件,文件名:njqx.py(你可以换成你喜欢的文件名.py)
8.3、导入库
import pgzrun
8.4、下载保存好素材
准备好素材,保存到指定的目录中,
本例子中,如果你想得到和我一样的效果,
下载我提供的素材(素材版权是我的),
保存图片时所起的名字一定要按我下文中所列出的一样,
同时保存图片的位置也不能改变任何。
在njqx.py所在的位置,新建立一个 images 目录,
素材1:
将素材1保存在images目录中,名字为:njqx00_bg.png
素材2:
将素材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
8.7、绘制场景
在njqx.py文件中新增代码如下:
def draw():screen.clear()screen.blit("njqx00_bg.png", (0, 0)) jingling.draw()
8.8、设定更新内容
在njqx.py文件中新增代码如下:
def update():jingling.left += 2if jingling.left > WIDTH:jingling.right = 0
8.9、增加主循环
pgzrun.go()
8.10、运行代码
运行njqx.py
效果如下:
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 + 80def draw():screen.clear()screen.blit("njqx00_bg.png", (0, 0)) jingling.draw()def update():jingling.left += 2if jingling.left > WIDTH:jingling.right = 0pgzrun.go()
推荐阅读:
| | |
给照片换底色(python+opencv) | 猫十二分类 | 基于大模型的虚拟数字人__虚拟主播实例 |
计算机视觉__基本图像操作(显示、读取、保存) | 直方图(颜色直方图、灰度直方图) | 直方图均衡化(调节图像亮度、对比度) |
语音识别实战(python代码)(一) | 人工智能基础篇 | 计算机视觉基础__图像特征 |
逆境清醒
matplotlib 自带绘图样式效果展示速查(28种,全) | PyCharm 社区版(2024.2.3)安装、配置、创建项目 | pycharm汉化插件无法使用也无法卸载的解决方法 |
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) | 开源数据科学平台Anaconda简介 | 最新版本Anaconda 2024.06-1安装设置 |
立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦 | Python 3D可视化(一) | 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud) |
python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印 | 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心) | python爱心源代码集锦(18款) |
Python中Print()函数的用法___实例详解(全,例多) | Python函数方法实例详解全集(更新中...) | 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 |
用代码过中秋,python海龟月饼你要不要尝一口? | python练习题目录 | |
草莓熊python turtle绘图(风车版)附源代码 | 草莓熊python turtle绘图代码(玫瑰花版)附源代码 | 草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码 |
巴斯光年python turtle绘图__附源代码 | 皮卡丘python turtle海龟绘图(电力球版)附源代码 | 【中秋月饼系列】2024年立体月饼新鲜出炉----python画月饼(1)附完整代码 |
逆境清醒
| | |
Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细) | 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名) | 2024年12月多家权威机构____编程语言排行榜__薪酬状况 |
| | |
手机屏幕坏了____怎么把里面的资料导出(18种方法) | 【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向) | 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决 |
逆境清醒
用代码画万圣节南瓜(python,MATLAB,html css) |
| CSS @规则(At-rules)系列详解 | |
| |||
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue) | 圣诞节系列代码专辑(目录) | Markdown 语法详解大全(超级版) | |
| | | |
2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特 | 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套) | SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例) | |
| | | |
【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码) | HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码) | 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载) |
逆境清醒
| | |
tomcat11、tomcat10 安装配置(Windows环境)(详细图文) | Tomcat端口配置(详细) | Tomcat 启动闪退问题解决集(八大类详细) |
逆境清醒
信息系统项目管理师试题 | 云计算 | |