项目简介
翻金币的小游戏,跟着教程来的 具体实现可以看b站上的视频。
创建项目、添加项目资源
项目 基本配置
- 设置背景图标
- 设置固定大小
- 设置项目标题
- 设置背景
- 背景标题
- 开始菜单 – 退出功能
- 创建开始按钮
封装自定义按钮 MyPushButton
- 构造函数 ( 默认显示图片, 按下后显示的图片)
- 测试开始按钮
- 开始制作特效
- zoom1 向下跳
- zoom2 向上跳
创建选择关卡场景
- 点击开始按钮后 延时进入到 选择关卡场景
- 配置选择关卡场景(图标、标题、大小)
- 设置背景图片、设置标题图片
- 创建返回按钮
- 选择关卡的返回按钮特效制作
- 点击后切换另一个图片
- 重写 void mousePressEvent
- 重写 void mouseReleaseEvent
开始场景与选择关卡场景的切换
- 点击选择关卡场景的返回按钮,发送一个自定义信号
- 在主场景中监听这个信号,并且当触发信号后,重新显示主场景,隐藏掉选择关卡的场景
选择关卡中的 按钮创建
- 利用一个for循环将所有按钮布置到场景中
- 在按钮上面 设置一个QLabel显示关卡数
- QLabel 设置 大小、显示文字、对齐方式、鼠标穿透
- 给每个按钮 监听点击事件
翻金币场景创建
- 点击选择关卡按钮后,进入到翻金币游戏场景
- 配置翻金币游戏场景 设置标题、图标、大小、设置背景
- 实现返回按钮,可以返回到上一个场景(选关场景)
- 实现三个场景之间的切换
实现显示关卡标签
- 在左下角显示玩家具体的关卡标签
- QLabel创建设置 大小和位置label->setGeometry(30, this->height() - 50,120, 50);
- QFont font 设置字体以及字号
- 给QLabel设置字体 setFont(font)
创建金币类
- 先将金币的背景图案 放入到PlayScene中
- 创建 MyCoin自定义金币按钮类
- MyCoin::MyCoin(QString btnImg) 构造函数中传入默认显示的图片金币
- 在PlayScene创建所有的金币按钮
每个关卡的默认显示
- 先引入dataConfig.h 和 dataConfig.cpp文件到项目中
- 在PlayScene 中写了 int gameArray[4][4]的数组 维护每个关卡的金币状态
- 初始化每个关卡的显示
金币翻转特效
- 给每个硬币加属性 posX 坐标x posY 坐标y ,bool flag 正反面标志
- 给MyCoin 加函数 changFlag改变标志
- 如果是flag为true 改为false 并且开启定时器1 (正面翻反面)
- 如果flag为false ,改为true,并且开启定时器2 (反面翻正面)
- 实现定时器中的内容
- 测试 金币翻银币 以及 银币翻金币
解决快速点击的效果不好
- 在MyCoin中加入了 isAnimation 判断 是否正在做动画条件
- 当按下 MyCoin 判断是否在做动画,如果做动画,直接return,保证金币和银币动态切换的完整效果
翻转周围金币
- 点击金币后 ,延时翻转周围金币实现
判断胜利
- PlayScene中 添加 isWin的标志 来判断是否胜利
- 如果胜利了,打印胜利信息
- 将所有按钮 屏蔽掉点击
胜利图片特效
- 将胜利图片放入到游戏场景外
- 当游戏胜利时,移动到屏幕中央,做胜利效果
添加音效资源
- QSound 所属模块 multimedia 需要在.pro文件中加入这个模块
- 在三个场景中添加音效 QSound * s = new QSound (“资源”)
- 播放 s ->play
- s->setLoop () 设置播放次数 -1代表无限循环播放
项目的优化
- 将三个场景的切换位置 一致
项目打包发布 以及游戏扩展玩法简介
打包可以参考这篇博客 QT5的程序打包发布(打包成exe可执行程序),
- windeployqt
记得用
qt自带的cmd
,生成exe,进入目录打包windeployqt xxx.exe - Engima Virtual Box