本文是C++面向对象的程序设计实战项目,实现单词消除游戏,具体项目及要求请点击查看。
一、单词消除游戏总体要求
单词消除游戏由两类参与者组成:闯关者(即游戏玩家),出题者(为游戏增加游戏中使用单词)。游戏规则为,游戏每一轮,程序会根据该关卡难度,显示一个单词,一定时间后单词消失。闯关者需要在相应地方输入刚刚显示并消失的单词,如果闯关者输入正确(即闯关者输入的单词与刚刚显示的单词完全一致,包含大小写)则为通过。一关可以由一轮或者多轮组成。
二、单词消除游戏具体要求
Version1
- 实现闯关者,出题者本地的注册、登录。
- 程序支持多人注册,同一时间只有一人可以登录。
- 实现游戏规则:出题者增加游戏中使用单词。游戏每一关,程序会根据该关卡难度,显示一个单词,一定时间后单词消失。闯关者需要在相应地方输入刚刚显示并消失的单词,如果闯关者输入正确则为通过。
- 任何角色均可查询所有闯关者、出题者,按照属性查找相应闯关者、出题者。
- 采用面向对象的方式,使用类设计。
- 在设计类时请注意类的继承关系,关注闯关者、出题者的关联(闯关者与出题者有共同的基类)。
- 使用文件或者数据库作为存储对象,自行设计文件格式,或者数据库表结构。
Version2
在Version1的基础上增加:
- 可以根据闯关者闯过关卡数、经验、等级等对闯关者排名,根据出题者出题数目、等级对出题者排名。
- 请根据要求设计每一关的出题方式,注意随着关卡数增加,题目难度增加
- 计闯关者经验值,等级增加策略。设计出题者等级升级策略。
Version3
在Version2的基础上增加:
- 使用socket进行通信,实现局域网通信游玩。
- 需要完成服务器端程序,以及客户端程序。客户端可以启动多个同时与服务器交互,要求服务器具有并发处理能力。
- 在题目的要求下自行扩展功能,功能扩展适当者酌情加分。
三、运行环境
电脑硬件配置:
处理器:Intel i7 7700HQ
显卡:NVIDIA GeForce GTX 1050 Ti
内存:16GB
编程语言:C++
QT:Qt Creator 4.11.1 Based on Qt 5.14.1 (MSVC 2017, 32 bit)
编译器:Desktop Qt 5.14.2 MinGW 7.3.0 64-bit
数据库:mysql Ver 8.0.20 for Win64 on x86_64 (MySQL Community Server - GPL)
其它说明:
关于QT数据库驱动
libmysql.dll和libqsqlmysql.a放入【…\Qt5.14.2\5.14.2\mingw73_64\bin】下。
qsqlmysql.dll和qsqlmysql.dll.debug放入【…\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers】下。
数据库信息:
需要修改请自行修改代码,以下是默认用户名和密码。
- 用户名:wxy
- 密码:123456
由于QT的限制,编译构建时路径不允许有中文。
服务器默认IP地址是本地127.0.0.1,有需要请自行修改代码。
四、模块设计
1、游戏客户端
模块清单
编号 | 模块名称 | 模块标识 | 模块功能 |
---|---|---|---|
1 | 主界面模块 | Widget | 主界面,包括登录等 |
2 | 用户类模块 | User | 闯关者,出题人类 |
3 | 注册模块 | Register | 注册用户 |
4 | 用户信息模块 | Info | 展示用户信息,包括等级、经验等 |
5 | 游戏模块 | Game | 单词消除游戏游玩界面 |
6 | 出题模块 | Create | 出题人出题界面 |
7 | 查询模块 | Check | 查询用户,排名界面 |
用户界面
1、主界面
2、注册界面
3、用户信息界面(出题人与闯关者文字略有不同)
4、游戏界面
5、出题界面
Version2:
Version3:
6、查询界面
函数具体功能
1、Widget
点击查看代码
1 | void init_UI();//初始化图形界面 |
2、user
player和creater继承于user类,升级函数采用虚函数,分别在各自类中实现。
3、register
点击查看代码
1 | void init_UI();//初始化图形界面 |
4、info
点击查看代码
1 | void init_UI();//初始化图形界面 |
5、game
点击查看代码
1 | void init_UI();//初始化图形界面 |
6、create
点击查看代码
1 | void init_UI();//初始化图形界面 |
6、check
点击查看代码
1 | void init_UI();//初始化图形界面 |
2、服务器端
模块清单
编号 | 模块名称 | 模块标识 | 模块功能 |
---|---|---|---|
1 | 主界面模块 | Widget | 主界面 |
2 | 线程模块 | My_thread | 实现多线程 |
用户界面
函数具体功能
1、Widget
点击查看代码
1 | void init_UI();//初始化图形界面 |
2、My_thread
当收到客户端的请求后,根据客户端发送的字符串判断是什么请求,在屏幕上输出,同时新建线程,在线程中处理这些请求,从而实现并发处理。
1 | void init_database();//初始化数据库 |
五、项目地址
本项目的源码、可执行程序均已经存放于我的Github,欢迎下载查看: