pgzrun 拼图游戏制作过程详解(总纲)

news/2024/5/18 15:58:51 标签: pygame, python, 开发语言, 游戏程序

拼图游戏是一种经典的益智游戏,玩家需要将一副被切割成若干小块的图片重新拼合成完整的图片。拼图游戏可以锻炼玩家的观察力、空间想象力和逻辑思维能力。它既可以作为休闲娱乐的游戏,也可以作为一种挑战自己的益智活动。在使用Pygame Zero创作拼图游戏时,你可以根据自己的创意和喜好设计不同的拼图布局、难度级别和关卡内容。通过合理的关卡设计和游戏机制,可以使拼图游戏更加有趣和具有挑战性。

录制_2023_09_08_14_00_27_779

接下来我们来学习

一、开发工具

Python版本:Python 3.6.4或以上版本。

二、相关模块

pgzrun模块以及一些Python自带的标准模块。

三、环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

Python在各个领域都有着丰富的第三方库,pygamepython在游戏领域的应用库,可以用来开发各种不同的游戏。但是对于初学者来说,还是存在一定的门槛。

pgzero(PyGame zero)是在PyGame基础上做了进一步的封装,使得设计一款游戏十分的方便。

安装语法:

python">pip install pgzero  # 注意不是pip install pgzrun

四、项目文件结构

在运行Python文件目录下建三个文件夹:images、fonts、sounds。

在运行Python文件目录下建一个.txt文本文件,用来记录最佳成绩。

注意:必须要在文件同一个目录下新建这三个文件夹,角色图片(默认是png格式)全部放在images文件夹、中文字库(默认为ttf字库)放在fonts文件夹、声音素材(默认为wav格式)放在sounds文件夹。

文件结构图如下:

五、开发思路大纲

1. 确定游戏的基本要素

  • 拼图的行数和列数
  • 游戏窗口的大小和标题
  • 拼图图片的路径

2. 创建游戏窗口和加载拼图图片:

  • 使用Actor()加载拼图图片
  • 使用draw()将图片绘制到窗口中
  • 使用pgzrun.go()启动游戏循环

3. 绘制完整的拼图

  • 建立Gird列表图块的基本信息
  • 修改draw()绘制函数绘制Gird列表中的所有小图块
  • 建立列表Squares存储所有的小图块文件

4. 将小拼图位置随机打乱

  • 建立swap_Square()坐标互换函数
  • 随机抽取若干组小拼图将其坐标进行互换

5. 实现拼图交换:

  • 监听鼠标点击事件,获取点击位置
  • 根据点击位置计算所点击的小块的索引,实现小块之间的交换

6. 检查拼图完成

  • 初始化成功的变量
  • 判断每个小拼图的位置是否与目标位置一致 
  • 绘制成功提示

7. 添加游戏提示线

  • 当拼图未完成时,为每一个小拼图绘制黑色边框
  • 当拼图未完成时,为当下鼠标点击的小拼图绘制红色边框

8. 添加音效和背景音乐

  • 循环播放背景音乐
  • 为小拼图互换时和游戏胜利时分别加入效果音

9. 添加其他功能和优化

  • 添加计时器,记录完成拼图所用的时间
  • 从txt文件中读写最好成绩
  • 优化游戏界面的布局和美观度

10. 拼图游戏继续升级——多关卡拼图

pgzrun拼图游戏素材包下载


http://www.niftyadmin.cn/n/5039911.html

相关文章

STM32 NVIC中断优先级管理通过结构图快速理解

STM32 NVIC中断优先级管理通过结构图快速理解 📑抢占优先级和响应优先级基本常识 🌿抢占优先级的级别高于响应优先级。🌿抢占优先级数值编号越小,所代表的优先级就越高;同理,响应优先级也是如此。&#x1…

【c语言】贪吃蛇

当我们不想学习新知识的时候,并且特别无聊,就会突然先看看别人怎么写游戏的,今天给大家分享的是贪吃蛇,所需要的知识有结构体,枚举,以及easy-x图形库的一些基本函数就完全够用了,本来我想插入游…

【面试题精讲】JavaOptional用法

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Java 8 引入了 Optional 类,用于解决空指针异常(NullPointerException)…

Cesium 获取高度值,高度值又是相对于谁来说的

文章目录 问题分析 问题 今天在开发中,甲方提出一个这样的问题,你的高度是怎么算出来的,对此,我只知道使用并不知道怎么来的,因此特意查了一番资料,希望帮助到大家 分析 在 Cesium 中,我们可以使…

线性筛素数(欧拉筛)

线性筛法,也称为欧拉筛法,是一种高效的素数筛选算法,它可以在O(n)的时间复杂度内筛选出小于等于n的所有素数。下面是线性筛素数的基本原理和代码示例: 基本原理: 1. 初始化一个布尔数组 is_prime,将所有的…

计算最大回撤

计算最大回撤 1. 累积计算统计特征函数 PANDAS库中累积计算统计特征函数: 1、CUMSUM() 依次给出前1,2,…,n个数的和 2、CUMPROD() 依次给出前1,2,…,n个数的积 3、CUMMAX() 依次给出前1&#…

Move HackerHouse第二周成果展示,诚邀您参与最终Demo Day展示

以Move为主题的Antalpha HackerHouse于9月3日在大理正式开启。为期3周的活动邀请到Web3开发者一起探索Move生态发展中的全新机遇。截至目前,活动已经超过了两周时间,即将在第三周迎来最终的Demo Day。 第一周总结:《九月大理 AHH Move 第一周…

前端面试的话术集锦第 18 篇博文——高频考点(HTTP协议 TLS协议)

这是记录前端面试的话术集锦第十八篇博文——高频考点(HTTP协议 & TLS协议),我会不断更新该博文。❗❗❗ 1. HTTP 请求中的内容 HTTP请求由三部分构成,分别为: 请求行 首部 实体 请求行大概长这样GET /images/logo.gif HTTP/1.,基本由请求方法、URL、协议版本组成,…