# 1.主要功能
本2048游戏采用C/S架构,Server端使用数据库存储用户信息,Client使用Qt编写的图形界 面与用户进行人机交互。
本次编程代码采用驼峰法命名。
本次界面设计所有资源图片来自weibo\@鱼鱼气泡水,字体及字号见界面功能备注。
## 1.1主界面
用户启动Client端应用程序后,进入主界面。
### 1.1.1界面组成
标题欢迎语
注册按钮登录按钮
### 1.1.2界面功能
- 标题:Start Up
- 欢迎语:Welcome To 2048(Times New Roman 36pt)
- 注册按钮:点击即可跳转至注册界面 (Times New Roman 14pt) 登录按钮:点击即可跳转至登录界面 (Times New Roman 14pt)
## 1.2注册界面
### 1.2.1界面组成
**标题**
- 用户名输入框密码输入框
- 异常信息显示框注册按钮
- 返回按钮
### 1.2.2界面功能
标题:Register
用户名输入框:待输入注册用户名 (Times New Roman 14pt) 密码输入框:待输入注册密码 (PASSWORD mode)
异常信息显示框:显示异常信息 (Times New Roman 9pt) 注册按钮:用户点击注册按钮后 (Times New Roman 14pt)
若注册用户名或注册密码为空,异常信息显示框显示用户名或密码不能为空,不 建立连接;
若注册用户名和注册密码都不为空,建立连接,以"Register 用户名 密码"格式发送到服务器,等待服务器应答。
若服务器应答"success",则清空用户名、密码输入框,断开连接释放资源,跳转至登录界面;否则异常信息显示框显示该用户名已被注册。
返回按钮:用户点击返回按钮后,返回主界面。 (Times New Roman 14pt)
## 1.3登录界面
### 1.3.1界面组成
标题
- 用户名输入框密码输入框
- 异常信息显示框登录按钮
- 返回按钮
### 1.3.2界面功能
标题:Login
用户名输入框:待输入登录用户名 (Times New Roman 14pt) 密码输入框:待输入登录密码 (PASSWORD mode)
异常信息显示框:显示异常信息 (Times New Roman 9pt) 登录按钮:用户点击登录按钮后 (Times New Roman 14pt)
若登录用户名或登录密码为空,异常信息显示框显示用户名或密码不能为空,不 建立连接;
若登录用户名和登录密码都不为空,建立连接,以"Login 用户名 密码"格式发送到服务器,等待服务器应答。
若服务器应答首字段为"success",则清空用户名、密码输入框,断开连接释放资源,跳转至游戏界面;否则异常信息显示框显示用户名或密码错误。
返回按钮:用户点击返回按钮后,返回主界面。 (Times New Roman 14pt)
## 1.4游戏界面
### 1.4.1界面组成
- 用户名显示框
- 用户当前分数显示框用户最高分数显示框该游戏最高分数显示框2048游戏主显示板
- 游戏操作说明框加载云端数据按钮重置数据按钮
- 存储数据到云端按钮结束游戏按钮
- 上移按钮下移按钮左移按钮右移按钮
### 1.4.2界面功能
用户名显示框:显示当前游戏用户名 (Times New Roman 9pt)
用户当前分数显示框:显示当前用户的得分 (Times New Roman 9pt)
用户最高分数显示框:显示当前用户自注册以来的最高分 (Times New Roman 9pt)
该游戏最高分数显示框:显示该2048游戏玩家所得历史最高分 (Times New Roman 9pt)
2048游戏主显示板:2048游戏面板 (Pristina 10pt) 游戏操作说明框:操作说明 (Segoe Print 9pt)
加载云端数据按钮:从云端恢复上次退出时存储的游戏状态 (Segoe Print 9pt) 重置数据按钮:将当前游戏状态重置 (Segoe Print 9pt)
存储数据到云端按钮:保存当前游戏状态到云端 (Segoe Print 9pt) 结束游戏按钮:结束游戏 (Segoe Print 9pt)
上移按钮:向上移动 (Segoe Print 9pt) 下移按钮:向下移动 (Segoe Print 9pt) 左移按钮:向左移动 (Segoe Print 9pt) 右移按钮:向右移动 (Segoe Print 9pt)
# 2.服务端功能
利用线程池、套接字编程和数据库操作等,实现了以下服务端功能:
能够接受并处理来自客户端的注册、登录、存档请求。
能够在接收到注册请求时,向MySQL数据库中插入用户的用户名和密码信息,并在用户名重复的情况下返回注册失败的消息。
能够在接收到登录请求时,查询数据库以检查密码和用户名是否匹配。若用户名 不存在或密码不正确,则返回登陆失败信息;若登录成功,则返回该用户的棋盘
状况、用户最高分、用户当前分数和游戏最高分。
能够在接收到存档请求时,向MySQL数据库中更新用户的棋盘状况、用户最高分和用户当前分数。
编程实现了一个线程池,可以自由设置线程池类型为固定线程数或固定每个线程 处理的最大连接数,默认为固定线程数。
每当监听到一个TCP连接请求,在线程池中为这个TCP连接分配一个线程进行处理,能够同时接收并处理多个用户的请求。
在接收到格式错误的请求,或数据库操作失败时,会打印并向客户端返回错误信 息,客户端根据错误信息进行适当处理。
能够在接收到客户端请求时,将当前日期时间、客户端IP地址、客户端端口号以 及请求消息打印到控制台。对请求进行相应处理后,会将处理结果(成功或失败 的信息,从数据库中查询得到的数据等)打印到控制台,方便观察和调试。
# 3.模块划分
## 3.1客户端
- main
初始化所有窗体,基于观察者模式确立信号与槽机制。
- functions
包含各模块共同需求的头文件,宏定义各模块共同需求的变量和常数。
- widget
声明及定义主界面,实现主界面组成及功能。
- register
声明及定义注册界面,实现注册界面组成及功能。
- login
声明及定义登录界面,实现登录界面组成及功能。
- game
声明及定义游戏界面,实现游戏界面组成及功能。
## 3.2服务端
- main
创建一个TcpServer并开始监听。
- ThreadHandler类
线程池类,采用单例模式,动态创建和管理服务端用于请求处理的线程,有两种 模式:固定线程数、固定线程持有连接数。
- TcpServer类
服务端的监听套接字,用于监听来自任意客户端的TCP连接请求,在成功建立
TCP连接后创建TcpSocket与之进行通信。TcpScket类
服务端的通信套接字,用于与特定客户端进行通信。一个TcpServer会为每一个
TCP连接创建一个TcpSocket。userinfo表
MySQL数据库中的表,有id、username、password、matrix、curScore、
topScore字段,用于持久化存储用户信息。
# 4.程序流程
## 4.1客户端流程图
### ![](https://www.writebug.com/myres/static/uploads/2021/10/28/f95b8eb7cfbafcaaf93b3373495cc0a8.writebug)
## 4.2服务端流程图
![](https://www.writebug.com/myres/static/uploads/2021/10/28/fe3a233ddd4bc16446b8b8ae0be23a2c.writebug)
# 5.概要设计
## 5.1编写目的
概要设计为2048开发提供基本的设计基础。
背景:2048是一款比较流行的益智休闲游戏,最早于2014年3月20日发行。原版2048首先在GitHub上发布,原作者是Gabriele Cirulli,后被移植到各个平台。它操作简单、容易上手, 曾经在手游市场风靡一时。本次开发在基本游戏功能的基础上加入了图形界面和账户信息云 存储,开发这款软件的主要目的在于供人娱乐和消遣。
## 5.2基本设计概念
同 4.程序流程
## 5.3功能需求与程序设计关系
### 客户端:
| 功能模子功能模块 功能描述 与其他模块关系 | | |
基于QT(CS架构)实现的2048游戏【100012960】
版权申诉
129 浏览量
2023-07-17
14:04:11
上传
评论 1
收藏 2.21MB ZIP 举报
![avatar](https://profile-avatar.csdnimg.cn/fbed2db386fd4018b8f2474d6651545d_s1t16.jpg!1)
神仙别闹
- 粉丝: 2712
- 资源: 7668
最新资源
- MyBatisCodeHelperPro 3.3.2-2322 2023.2-2024.1
- 基于Python的简单的学生成绩管理程序设计(课程设计)
- jdk-8u20-windows-x64安装版本-jdk-8u301-linux-x64解压版
- 植物大战僵尸杂交版 修改阳光和冷却
- html css js网页设计ntion-model-for-开发笔记
- 数据库课程设计-processing开发笔记
- matlab画图sic-开发demo
- 数据库原理课程设计-图书馆数据库管理系统
- IEC101Sim IEC870-5-101协议仿真主站、子站 (含源码 C++Builder)
- 2212503007陈熙炜跨境2202作业2.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)