当前位置: 首页 > news >正文

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

Pygame Zero(pgzrun)详解

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

 

本文目录:

零、时光宝盒

一、Pygame Zero简介

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

三、Pygame Zero 的坐标系

四、Pygame Zero项目的目录

五、Pygame Zero的语法参数

六、Pygame Zero常用的固定函数

七、Pygame Zero(pgzrun)安装

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

 


 

零、时光宝盒

2ab463de26a541818271efa176656ae6.png

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

今天是2025年1月1日,

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

虽然我并不算真的认识你们,你们也不知道我是谁,
但这份祝福是发自肺腑,钻石般坚定的!

 

    逆境清醒
2025.1.1 

此文地址:https://blog.csdn.net/weixin_69553582/article/details/144864025

7f8eafc867aa425cab7d368ee0eb4dd8.gif

 

一、Pygame Zero简介

a21e071dbdcb4e55806cdc35467512b0.png

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

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

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

d236be8efbf74686907ed136ae074eac.png

 

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 的坐标系

Pygame Zero 的坐标系以左上角为原点 ( 0, 0 )

18c90f733f444377b574cb2984583553.png

 

四、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((redgreenblue)

 

fill((红、绿、蓝))

用纯色填充屏幕。

 

4

blit(image(lefttop))

 

 

将图像绘制到给定位置的屏幕上。

blit(图像,(左,上))

将图像绘制到屏幕上的给定位置。

blit()接受Surface或字符串作为其图像参数。

如果image是str,则将从images/目录加载命名的image。

 

5

draw.line(startend(rgb))

 

draw.line(开始、结束、(红、绿、蓝))

从头到尾画一条线。

 

6

draw.circle(posradius(rgb))

 

draw.circle(位置、半径、(红、绿、蓝))

绘制圆的轮廓。

 

7

draw.filled_circle(posradius(rgb)

 

draw.filled_circle(位置、半径、(红、绿、蓝))

绘制一个实心圆。

 

8

draw.rect(rect(rgb))

 

draw.rect(矩形,(红、绿、蓝))

绘制矩形的轮廓。

 

9

draw.filled_rect(rect(rgb)

 

draw.filled_rect(矩形,(红、绿、蓝))

绘制一个填充矩形。

 

10

draw.text(text, [pos, ]**kwargs)

 

draw.text(文本, [pos, ]**kwargs)

绘制文本。

 

11

raw.textbox(textrect**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

运行结果:

弹出一个黑色的空白窗口

c8785f6ac4fb49ab9c6dbf949cace9af.png

说明pygame zero安装成功

 

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

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

先看效果图(gif):

ced2b7a9fd4e4b43b22e594ede8892eb.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:

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

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

效果如下:

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 + 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()

 


 

推荐阅读:

   

27d5b50d93a089da35ee1a28905f9719.jpeg​​​​

c64d8b4d0b6842ebe1196c0b1e3fba51.jpeg​​​​

a136a43cd0015088d4ce37b1bb653533.jpeg​​​​

给照片换底色(python+opencv)猫十二分类基于大模型的虚拟数字人__虚拟主播实例

0f92b28e915ca3cc26cfaaf47c5fc62d.jpeg

5d2b51be3e7e932be95355088e17d524.jpeg

3cf3fe3c1a186bfcbf12d4755b8950ae.jpeg

计算机视觉__基本图像操作(显示、读取、保存)直方图(颜色直方图、灰度直方图)直方图均衡化(调节图像亮度、对比度)

849b7a72434213407c862c8f8e071a22.png

9412a31659ba6db83d806c3f354dd1c0.png

fb29a865f75af8352dca5e3d56a09004.png

语音识别实战(python代码)(一)

 人工智能基础篇

 计算机视觉基础__图像特征

   

逆境清醒

   

637c349e8206c0651d1f2751ba128912.png

ce6afe00fdaa41f8aff1cf830e23f1ac.png7364ac22aa4f40899b6d7597ad7d91b6.png

 matplotlib 自带绘图样式效果展示速查(28种,全)

 

PyCharm 社区版(2024.2.3)安装、配置、创建项目

 

pycharm汉化插件无法使用也无法卸载的解决方法

   
   
   

ec9793633e16de7b52fbf0b74ecfa2f3.png

1b1579176220a88ae2a53758f91a41d6.pngc97237f650c44d0da960e88c37fc921d.png
Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

 

开源数据科学平台Anaconda简介

 

最新版本Anaconda 2024.06-1安装设置

   
   

6e420cca6a1313b93948785f689f5723.png

1da3f182e081ad8f3cfcf53013909b8b.png

ca733c1a99c6457a762d0e503855ce79.png

立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦

 Python 3D可视化(一)

让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)

f92dfeb72ec683025a63db2fe8a26492.png

1b2a866ebb074a1e5859dad42c435d5c.jpeg

8207b63755bf37b10807a046080f14df.png

 python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

python爱心源代码集锦(18款)

b97d56fe7e3ce6234cb182ad86fef4ed.jpeg

6871f222e7db3f8ce83336ad50311c3a.png

b89ed1147e8a76e6c64b812d65e8f2ef.png

 Python中Print()函数的用法___实例详解(全,例多)

 Python函数方法实例详解全集(更新中...)

 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念

7090a17485b11d9da69e37e5756c6910.png

50313523c8c19f29270fb1110fe66ae9.png

 
用代码过中秋,python海龟月饼你要不要尝一口?

 python练习题目录

 

4c77c7a60782637db9e27b3deec7abee.png

c397ed3a22c7885194eb92b5b3883322.png

a18fbd27f15eaa98f0bb5a4fed8cbd8b.png

草莓熊python turtle绘图(风车版)附源代码

 ​草莓熊python turtle绘图代码(玫瑰花版)附源代码

 ​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码

   
   

36e2af3bf474c59b9c430b223417793b.png

542dbf91cfafa23e1ccdee94a7b22397.png

175f4dd5b5bb4e46915f57c9f853f001.jpeg

 巴斯光年python turtle绘图__附源代码

皮卡丘python turtle海龟绘图(电力球版)附源代码

 

【中秋月饼系列】2024年立体月饼新鲜出炉----python画月饼(1)附完整代码

   

逆境清醒

   

68b0f4704053ab870c16bb4e37897d63.png

25ff4b8d741f0942c50dd96b7e866386.jpeg​​​​​​​

59bb0955631256520f0edd17f8304669.jpeg​​​​​​​

 Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)

 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名)

2024年12月多家权威机构____编程语言排行榜__薪酬状况
   
   

7dda70990181a20a430cc7b13dc9d8aa.png

a1fea2de0187913a4cdb18473c512c55.png​​​​​​​

96e1df3760ce3017026da2d1de069869.png​​​​​​​

 手机屏幕坏了____怎么把里面的资料导出(18种方法)

【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)

 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

   

逆境清醒

cc75265b98b9475cb68deece4f3def19.png

用代码画万圣节南瓜(python,MATLAB,html css)

8fe676a8d0404267af522df861a0a904.gif

CSS3 动画相关属性实例大全

49148faa34d949e999b8f0976a1fa8cb.png

CSS @规则(At-rules)系列详解

fa753f11d26d967646a85b78b53dc703.png​​​​​​​

71e3b727d1634951aeed4e66cc536fe1.jpega1632ea3af784e47a1673144e360272e.gif
vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)

 

圣诞节系列代码专辑(目录)

 

Markdown 语法详解大全(超级版)

4290a52c20eee861ee159e17659342f5.png​​​​​​​

b126b976989a1e4f1ae40867407e8f4d.png​​​​​​​

15f065b7e46b238db1e7382f70fd7076.png​​​​​​​

2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特

 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套)

SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

f3a00b9bf85e8d36c21d8e9785f43a53.png​​​​​​​

1f143789d9652fd35c1fabf11b6f149c.png​​​​​​​

2c8047a9f87aa22a8abe57ad0081b1d9.png​​​​​​​

【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)

逆境清醒

a01e7c6663c27936b3c174265db14012.png​​​​​​​

6d12eed561af36157625a07b771f9b0b.png​​​​​​​

af9dcebc4110cf5b9a012a3ef7d268fe.png​​​​​​​

 tomcat11、tomcat10 安装配置(Windows环境)(详细图文)

 Tomcat端口配置(详细)

 Tomcat 启动闪退问题解决集(八大类详细)

   

逆境清醒

987cd5bf2ecef39fd782b5d64f0c3cbf.png7bd749109565caaad3799224fad815a4.jpeg 

 

信息系统项目管理师试题

 

云计算

 
   

 

 


http://www.mrgr.cn/news/82285.html

相关文章:

  • 微信小程序 实现拼图功能
  • 计算机网络 (40)域名系统DNS
  • STM32-Flash存储
  • Linux的基础IO
  • 【Linux】深刻理解软硬链接
  • 使用NetLimiter限制指定应用的网速
  • NLP中的神经网络基础
  • SELECT的使用
  • GRAPE——RLAIF微调VLA模型:通过偏好对齐提升机器人策略的泛化能力(含24年具身模型汇总)
  • 矩阵的因子分解1-奇异值分解
  • 本地LLM部署--llama.cpp
  • Go 语言:Jank 简客博客系统
  • 我在广州学 Mysql 系列——插入、更新与删除数据详解以及实例
  • 数据结构与算法Python版 拓扑排序与强连通分支
  • chatwoot 开源客服系统搭建
  • 我的 2024 年终总结
  • 【信号滤波 (中)】采样条件及多种滤波算法对比(滑动平均/陷波滤波)
  • 【机器学习】工业 4.0 下机器学习如何驱动智能制造升级
  • JSON 系列之3:导入JSON标准示例数据
  • Redis - 1 ( 11000 字 Redis 入门级教程 )
  • SpringBoot整合Canal+RabbitMQ监听数据变更
  • gitlab的搭建及使用
  • uniapp H5 对接 声网,截图
  • 【Java回顾】 Day1简介-----变量命名规则
  • 时间序列预测算法---LSTM
  • Git的使用流程(详细教程)