1.项目简介
1.1项目说明:
该项目为一款基于QT的方块游戏项目。该项目与传统的俄罗斯方块游戏不同的是,在实现了传统方块游戏满行消除、多行消除、以及分值统计的基本需要。
首先,额外增添了技能项,当达到一定的条件,玩家便能够释放技能直接清除全屏方块;其次,额外设置了游戏难度自增,随着一定行数的消除,方块下坠速度会越来越快,增加游戏难度;最后,额外增添了排行榜,在游戏结束后,玩家的数据将会显示在排行榜之中。
1.2项目技术:
本项目对QT中QGraphicsView类自定义,实现场景视图上的一切操作、并且响应boxGroup的消息、以及向主窗体传递消息。
对QWidget自定义,为程序的主窗体、显示一些窗口版块、以及对于来自view消息的响应。
对QPushButton进行自定义,实现一些鼠标进入、离开按钮的时间、音效、亮度变化的效果。
对QGraphicsItemGroup类自定义,实现几种不同的方块组形状及颜色的初始化、接收键盘消息,以完成俄罗斯方块对键盘的各种操作进行响应、使用计时器开始和暂停游戏、完成对场景坐标的变换,实现俄罗斯方块的翻转、碰撞检测。
对QGraphicsObject类自定义,实现方块内的小格子、以及碰撞的检测。
使用QT内置的sqlite,并调用QSqlDatabase进行了数据库的操作。
使用PS技术对项目素材进行了加工。
2.需求分析及界面设计
2.1需求分析
实现游戏初始加载动画
实现用户注册、登录界面及功能(含数据库检验)
实现游戏主界面设计
实现历史记录排行榜
实现方块形状及颜色的初始化
实现方块通过按键旋转(包含侧边碰撞返回)
实现方块满行消除(包含底边碰撞返回)
实现游戏中途暂停、鼠标脱离窗口自动暂停
实现技能的全屏消除
实现游戏中不同场景背景音乐的切换
2.2界面设计
界面交互设计的原则
统一性原则
界面风格统一:
用相同风格的素材进行界面背景的实现,对界面各空间采取相容的色调的控件,不同各种颜色胡乱混搭
美观性原则
界面美观大方,不同的游戏元素缓解玩家的视觉疲劳
易用性原则
操作方式应贴合使用者的日常使用习惯,不能设计反人类的操作体验
如下图所示:
游戏初始加载界面:
游戏加载成功:
注册登录界面:
文本输入框、按钮、标题栏统一使用与背景图片相合的色调
登入成功后,排行显示界面:
游戏主界面:
3.概要设计
3.1实现游戏初始加载动画
程序启动画面的设计主要是使用了Qt中的QSplashScreen这个类,为这个类创建对象的时候使用setPixmap传入图片,并且设置该对象的大小尺寸。
使用showMessage在图片上添加对应的文字,比如游戏规则。
接着调用show()方法即可显示。
需要结束启动画面时,则调用finish()方法,该方法的用来指定窗口初始化完成后结束启动画面。
部分代码如下:
QSplashScreen*splash=newQSplashScreen;
splash->setPixmap(QPixmap("路径"));
splash->setStyleSheet("font-size:16px;font-weight:480");
splash->showMessage(QObject::tr("…"),Qt::AlignCenter,QColor(255,255,255,255));
splash->show();
QThread::sleep(4);
splash->showMessage(QObject::tr(" \t游戏加载成功,正在进入..."),Qt::AlignCenter,QColor(255,255,255,255));
splash->finish(&w); //当主窗口启动后,启动画面隐藏
deletesplash;
3.2.实现用户注册、登录界面及功能(含数据库检验)
初始化数据库,调用QSqlDatabase,进行数据库打开操作。建立一张新表,其中该标的属性列如下: