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

相关推荐
阿拉斯攀登25 分钟前
从入门到实战:CMake 与 Android JNI/NDK 开发全解析
android·linux·c++·yolo·cmake
diablobaal2 小时前
云计算学习100天-第102天-Azure入门4
学习·云计算·azure
AI_零食2 小时前
Flutter 框架跨平台鸿蒙开发 - 自定义式按钮设计应用
学习·flutter·ui·华为·harmonyos·鸿蒙
小陈phd2 小时前
多模态大模型学习笔记(三十)—— 基于YOLO26 Pose实现车牌检测
笔记·学习
野指针YZZ2 小时前
XV6操作系统:trap机制学习笔记
笔记·学习
diygwcom3 小时前
学习开源数据采集与监视控制SCADA-即工业组态开源框架FUXA
学习·开源
筱璦3 小时前
期货软件开发 - C# 调用 HQChart 指标计算 C++ 动态库
c++·microsoft·c#
zl_dfq3 小时前
Python学习5 之【字符串】
python·学习
不想写代码的星星4 小时前
C++ 内存管理:分区、自定义分配器、常见问题与检测工具
c++
-许平安-4 小时前
MCP项目笔记九(插件 bacio-quote)
c++·笔记·ai·plugin·mcp