零、时光宝盒
逆境清醒: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编写游戏的一般流程是:
- 安装:可以使用pip命令来安装Pygame Zero库。在命令行中输入pip install pgzero即可安装。
- 导入Pygame Zero模块:import pgzrun 或者 from pgzrun import *
- 初始化:设置游戏窗口的宽度和高度等参数,例如:
WIDTH = 800; HEIGHT = 600
- 在draw()函数中绘制游戏场景,例如绘制背景、角色等。
- 在update()函数中更新游戏状态,例如检测输入、移动角色等。
- 调用Pygame Zero的主循环函数:pgzrun.go()
三、Pygame Zero 的坐标系
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 代码解读
运行结果:
弹出一个黑色的空白窗口
说明pygame zero安装成功
八、pygame zero实例(飘动的小精灵)
简单例子,一个小精灵在空中飘动。
先看效果图(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:
将素材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
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
效果如下:
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 画矩形(空心、实心、多个矩形、多层同心矩形、彩虹条矩形、条纹相间、随机颜色矩形、特殊效果、渐变效果)