Pygame实现记忆拼图游戏8

devtools/2025/3/19 9:42:12/

在《Pygame实现记忆拼图游戏7》中,实现了游戏启动后,显示70个图案背面的功能。游戏启动后,会为玩家分组显示70个图案,玩家要在很短的时间内尽量多地记住相同图案的位置,因为之后显示的图案又会遮住,如图1所示。

图1 游戏启动界面

在startGameAnimation()函数中实现上述功能。

1 将70个图案进行随机分组

从图1中可以看出,游戏启动后,每次显示8个图案,最后一次显示剩下的6个图案。因此,首先对70个图案进行随机分组,分成9个组,其中前八个组每组8个图案,最后一组6个图案。将70个图案进行随机分组主要分为两个步骤:第一步是先将图案进行随机排列,第二步是对随机排列的图案进行分组。

1.1 将70个图案随机排列

每个图案用其所在的列数和行数表示,行数和列数组成一个元组,每个元组代码一个图案。在startGameAnimation()函数中,将70个图案随机排列的代码如图2所示。

图2 将70个图案随机排列的代码

其中,第50行代码定义了一个空列表boxes,该列表中将包含随机排列后的图案行列数;第51-53行代码通过两个for循环创建了70个图案的行列数,并将其添加到boxes中;最后第54行代码通过random.shuffle()使boxes中图案随机排列。使用调试代码可以看到随机后的boxes值,如图3所示。

图3 随机后的boxes值

其中,boxes中由70个元组组成,每个元组的第一个元素表示图案的列数,第二个元素表示图案的行数。此时的boxes已经进行了随机化。

1.2 对随机排列的图案进行分组

在得到了70个随机排列的图案行列数之后,对其进行分组,通过自定义函数splitIntoGroupsOf()实现。该函数的代码如图4所示。

图4 splitIntoGroupsOf()函数的代码

其中,splitIntoGroupsOf()的第一个参数表示每组包含的图案数,第二个参数表示要分组的图案列表;第57行代码定义的空列表result用于保存分组之后的图案行列数;第58-59行代码通过for循环对列表进行分组,并把每一组的图案都添加到result中。

在startGameAnimation()函数中调用splitIntoGroupsOf()的代码如图5所示。

图5 调用splitIntoGroupsOf()的代码

其中,8表示每组8个图案,boxes是图2中生成的图案列表,变量boxGroups保存了分组之后的图案,通过调试代码可以显示boxGroups的值,如图6所示。

图6 boxGroups的值

其中,boxGroups被分成了9个组,每一行为一个组中包含的图案,一共8个,最后一组包含6个图案。对比图3可以看出,图6中显示的值就是图3中值的分组。


http://www.ppmy.cn/devtools/168305.html

相关文章

Python扑克牌游戏更新哦~【增加更多牌类】

以下是更新后的代码,包含了常见单牌、对子、三带、顺子、连对、飞机等 更新后的完整代码 import random class Card: def __init__(self, suit, rank): self.suit suit # 花色:♠, ♥, ♣, ♦ self.rank rank # 牌面&#xff…

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty 详细解释1. 基本功能2. 语法3. 示例代码示例 1:创建一个 5 的未初始化张量示例 2:创建一个 23 的未初始化张量示例 3:指定数据类型和设备 4. 注…

启幕数据结构算法雅航新章,穿梭C++梦幻领域的探索之旅——二叉树序列构造探秘——堆的奥义与实现诗篇

人无完人,持之以恒,方能见真我!!! 共同进步!! 文章目录 一、堆的定义与结构二、堆的实现1.堆的初始化和销毁堆的初始化堆的销毁 2.向上调整算法和入堆向上调整算法入堆 3.向下调整算法和出堆顶数…

深度学习之防止过拟合

过拟合是机器学习中常见的问题,特别是当模型复杂度较高或训练数据量较少时。为了避免模型过度依赖训练数据中的噪声,采取一些有效的防止过拟合的方法非常重要。以下是几种常见的防止过拟合的技术,包括 Dropout、数据增强、正则化 等,并对它们进行详细的介绍与对比。 1. Dr…

IP 协议

文章目录 IP 协议概述数据包格式首部校验和实例分析实例一 分片抓包分析参考 本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。 IP 协议 概述 IP 协议是 TCP/IP 协议簇中的核心协议,也…

MySQL--DDL

1、DDL-数据库操作 查询: 查询所有数据库: SHOW DATABASES; 查询当前数据库: SELECT DATABASE(); 创建: CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]; 删…

JVM部分八股

什么是JVM? 有哪些好处? 索引越界可能导致程序覆盖其他程序内存中的代码 JVM是一套规范,有多种实现 JVM运行流程? 1.类加载器将java程序翻译为java字节码文件 2.运行数据区将字节码文件加载到内存,字节码文件是J…

【计算机视觉】工业表计读数(2)--表计检测

1. 简介 工业表计(如压力表、电表、气表等)在工控系统、能源管理等领域具有重要应用。然而,传统人工抄表不仅工作量大、效率低,而且容易产生数据误差。近年来,基于深度学习的目标检测方法在工业检测中展现出极大优势&…