C++学习之QT综合项目二经典翻金币小游戏及打包

1.项目简介及创建

复制代码
#include "chooselevelscene.h"
复制代码
#include <QMenuBar>
复制代码
#include <QMenu>
复制代码
#include <QPainter>
复制代码
#include "mypushbutton.h"
复制代码
#include <QTimer>
复制代码
#include <QDebug>
复制代码
#include <QLabel>
复制代码
#include <QSound>
复制代码
复制代码
ChooseLevelScene::ChooseLevelScene(QWidget *parent) : QMainWindow(parent)
复制代码
{
复制代码
    //设置窗口固定尺寸
复制代码
    this->setFixedSize(320,588);
复制代码
    //设置图标
复制代码
    this->setWindowIcon(QPixmap(":/CoinRes/Coin0001.png"));
复制代码
    //设置标题
复制代码
    this->setWindowTitle("选择关卡");
复制代码
复制代码
    //选关按钮音效
复制代码
    QSound * chooseSound = new QSound(":/CoinRes/TapButtonSound.wav",this);
复制代码
    //返回按钮音效
复制代码
    QSound * backSound = new QSound(":/CoinRes/BackButtonSound.wav",this);
复制代码
复制代码
    //创建菜单栏
复制代码
    QMenuBar * bar =  menuBar();
复制代码
    this->setMenuBar(bar);
复制代码
    //创建开始菜单
复制代码
    QMenu * startMenu = bar->addMenu("开始");
复制代码
    //创建退出菜单项
复制代码
    QAction * quitAction =  startMenu->addAction("退出");
复制代码
    //监听退出菜单项
复制代码
    connect(quitAction,&QAction::triggered,[=](){ this->close(); });
复制代码
复制代码
    //返回按钮
复制代码
    MyPushButton * backBtn = new MyPushButton(":/CoinRes/BackButton.png",":/CoinRes/BackButtonSelected.png");
复制代码
    backBtn->setParent(this);
复制代码
    backBtn->move(this->width()-backBtn->width(),this->height() - backBtn->height());
复制代码
复制代码
    //监听返回按钮点击
复制代码
    connect(backBtn,&MyPushButton::clicked,[=](){
复制代码
        backSound->play();
复制代码
        QTimer::singleShot(500,[=](){
复制代码
            //延时 返回主场景,发送自定义信号
复制代码
            emit this->chooseSceneBack();
复制代码
        });
复制代码
    });
复制代码
复制代码
复制代码
    //创建选择关卡按钮
复制代码
    for(int i = 0 ; i < 20;i++)
复制代码
    {
复制代码
        MyPushButton * menuBtn = new MyPushButton(":/CoinRes/LevelIcon.png");
复制代码
        menuBtn->setParent(this);
复制代码
        menuBtn->move( 25 + (i%4)*70 , 130 + (i/4)*70 );
复制代码
        connect(menuBtn,&MyPushButton::clicked,[=](){
复制代码
            //qDebug() << "您选择的是第" << i + 1 << "关" ;
复制代码
            //播放音效
复制代码
            chooseSound->play();
复制代码
            if(this->pScene == NULL)
复制代码
            {
复制代码
                this->hide();
复制代码
                this->pScene = new PlayScene(i+1);
复制代码
                this->pScene->setGeometry(this->geometry());
复制代码
                this->pScene->show();
复制代码
复制代码
                connect(pScene,&PlayScene::chooseSceneBack,[=](){
复制代码
                    this->setGeometry(this->pScene->geometry());
复制代码
                    this->show();
复制代码
                    delete this->pScene;
复制代码
                    this->pScene = NULL;
复制代码
                });
复制代码
            }
复制代码
        });
复制代码
复制代码
        //显示按钮上的文字
复制代码
        QLabel * label = new QLabel;
复制代码
        label->setParent(this);
复制代码
        label->setFixedSize(menuBtn->width(),menuBtn->height());
复制代码
        label->setText( QString::number( i+1 ));
复制代码
        label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
复制代码
        label->move(25 + (i%4)*70 , 130 + (i/4)*70);
复制代码
        //设置属性 鼠标穿透属性  51
复制代码
        label->setAttribute(Qt::WA_TransparentForMouseEvents);
复制代码
    }
复制代码
复制代码
}
复制代码
复制代码
void ChooseLevelScene::paintEvent(QPaintEvent *event)
复制代码
{
复制代码
    QPainter painter(this);
复制代码
    QPixmap pix;
复制代码
    pix.load(":/CoinRes/OtherSceneBg.png");
复制代码
    painter.drawPixmap(0,0,this->width(),this->height(),pix);
复制代码
复制代码
    //加载标题
复制代码
    pix.load(":/CoinRes/Title.png");
复制代码
    painter.drawPixmap(this->width()*0.5-pix.width()*0.5,30,pix.width(),pix.height(),pix);
复制代码
}
复制代码

2.导入资源

3.主场景搭建

4.开始创建按钮

5.开始按跳跃效果实现

6.选择关卡场景搭建

7.主场景进入选关场景

8.返回按钮创建

9.返回按钮功能实现

10.选关按钮创建

11.选关按钮数字显示

12.游戏场景搭建

13.游戏场景配置

14.游戏场景的返回按钮实现

15.游戏场景显示当前卡号

16.硬币背景图创建

17.硬币类的创建

18.关卡配置数据引入

19.初始化全部关卡

20.翻转硬币实现

21.禁用按钮

22.翻转周围硬币实现

23.游戏胜利检测

24.胜利效果展示

25.胜利后禁用硬币点击

26.音效添加

27.项目优化

28.辅助玩法介绍

29.打包发布流程说明

30.安装和卸载项目

相关推荐
心.c21 分钟前
如何学习Lodash源码?
前端·javascript·学习
FserSuN24 分钟前
构建基于大语言模型的智能数据可视化分析工具的学习总结
学习·信息可视化·语言模型
im_AMBER34 分钟前
React 02
前端·笔记·学习·react.js·前端框架
怀揣小梦想38 分钟前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
Nebula_g38 分钟前
Java哈希表入门详解(Hash)
java·开发语言·学习·算法·哈希算法·初学者
努力努力再努力wz41 分钟前
【C++进阶系列】:万字详解unordered_set和unordered_map,带你手搓一个哈希表!(附模拟实现unordered_set和unordered_map的源码)
java·linux·开发语言·数据结构·数据库·c++·散列表
加油=^_^=42 分钟前
【C++】哈希表
数据结构·c++·散列表
对纯音乐情有独钟的阿甘43 分钟前
【C++庖丁解牛】哈希表/散列表的设计原理 | 哈希函数
c++·哈希算法·散列表
励志不掉头发的内向程序员44 分钟前
【STL库】哈希表的原理 | 哈希表模拟实现
开发语言·c++·学习·散列表
玩镜的码农小师兄1 小时前
[从零开始面试算法] (04/100) LeetCode 136. 只出现一次的数字:哈希表与位运算的巅峰对决
c++·算法·leetcode·面试·位运算·hot100