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.安装和卸载项目

相关推荐
Young Doro7 小时前
独立性检测学习任务
人工智能·学习·数据挖掘
hetao17338377 小时前
2026-10-22~23 hetao1733837 的刷题记录
c++·算法
王老师青少年编程8 小时前
2025年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
卡卡~~9 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法
lengxuenong10 小时前
树状数组 · 信息学学习手册1-求和3个模板
c++·学习·算法·青少年编程
lanxiaoqing0210 小时前
演讲训练的第一步:先敢说,再会说
人工智能·学习·学习方法·口才
ShineWinsu10 小时前
对于Qt:信号与槽的解析
c++·qt·gui·lambda·信号·信号与槽·槽函数
WL学习笔记11 小时前
使用string类
c++·后端·string类
xxxiugou12311 小时前
链表算法题精讲:从两数相加到K组翻转
数据结构·c++·算法·链表
HAPPY酷11 小时前
C++ 自定义内存池优化点云处理:从裸指针到 RAII 自动回收
开发语言·c++