简易拼图游戏项目
拼图游戏项目总结文档
一、项目概述
本项目是一个基于PyQt5开发的桌面应用程序,包含用户认证(登录/注册)和拼图游戏两大核心功能。整体架构采用模块化设计,通过界面交互实现用户从登录到游戏的完整流程,数据存储采用本地本地文件,主要是一个小型的交互式桌面应用示例。
二、核心逻辑
1. 用户系统(登录/注册)
数据存储
- 用户数据存储在
data/users.txt
文件中,每条记录包含用户唯一标识(sid)、账号(acc)、姓名(name)、密码(pwd)、年龄(age),格式如下:sid:123 acc:1323 name:小明 pwd:123456 age:18
- 通过
view/file_io.py
中的工具函数实现数据读写:file_read(path)
:读取文件并解析为字典列表(每个字典对应一个用户信息);file_add(path, data)
:将新用户数据追加到文件,保持统一格式。
登录流程
- 界面交互:用户在
LoginWidget
输入账号、密码和验证码,点击“登录”按钮; - 数据验证:
- 程序读取
users.txt
中的用户数据,转换为Student
对象列表; - 对比输入的账号/密码与用户数据,验证通过则隐藏登录界面,显示游戏界面;
- 验证失败则提示“登录失败”,清空密码和验证码输入框。
- 程序读取
注册流程
- 界面交互:用户在
RegWidget
输入账号、密码、确认密码,点击“确认”按钮; - 数据存储:
- 输入的账号和密码以字典形式通过信号传递给登录界面;
- 同时将新用户数据追加到
users.txt
(当前逻辑仅存储账号和密码,可扩展为完整信息);
- 界面切换:注册成功后自动隐藏界面,返回登录界面并自动填充注册的账号和密码。
2. 拼图游戏
界面布局
- 采用
QHBoxLayout
主布局,左侧为3x3
网格布局(放置拼图图片),右侧为垂直布局(放置功能按钮:变换位置、重新开始、退出游戏)。
核心逻辑
随机初始化:
- 程序启动时随机生成
1-9
的不重复序列,对应images
文件夹中的图片; - 随机指定一个空白位置(不显示图片),形成初始拼图状态。
- 程序启动时随机生成
移动逻辑:
- 监听鼠标左键点击图片时,通过坐标标坐标计算点击位置(行/列);
- 判断点击位置是否与空白位置相邻(上下左右),若相邻则交换图片与空白位置;
- 更新图片列表和空白位置坐标,实现拼图移动效果。
三、重要交互
1. 界面间切换
- 登录 → 注册:点击登录界面的“注册”按钮,隐藏登录界面,显示注册界面;
- 注册 → 登录:点击注册界面的“返回”按钮,通过注册界面,显示登录界面(通过
regback_Signal
信号触发); - 登录 → 游戏:登录验证成功后,隐藏登录界面,显示游戏界面。
2. 信号与槽机制
- 注册→登录数据传递:注册成功后,通过
comfire_register_Signal
信号将账号密码以字典形式传递给登录界面,自动填充输入框; - 注册返回信号:注册界面的“返回”按钮触发
regback_Signal
(无参)、regback_Signal2
(带字符串)、regback_Signal3
(带字典),用于登录界面处理不同返回逻辑。
3. 游戏交互
- 图片移动:左键点击与空白位置相邻的图片,触发位置交换;
- 功能按钮:右侧按钮可触发“变换位置”“重新开始”“退出游戏”等操作(当前部分功能需完善逻辑)。
四、模块关系
- 入口:
main.py
初始化应用并启动登录界面(LoginWidget
); - 用户界面:
LoginWidget
(登录)、RegWidget
(注册)通过信号槽关联,实现状态同步; - 数据层:
file_io.py
提供文件读写工具,Student
类封装用户信息及登录验证方法; - 游戏层:
Game
类实现拼图逻辑,登录成功后由登录界面启动。
五、总结
本项目通过PyQt5的界面组件和信号槽机制,实现了用户认证与拼图游戏的完整流程。核心亮点在于模块化的界面设计和文件数据的简单交互,可作为桌面应用开发的基础示例,后续可扩展用户信息完善、游戏难度分级、拼图完成判定等功能。
如果你想查看我的源码,可以到我的github上下载
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 我的博客!