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

相关推荐
2601_9622186121 分钟前
C++ string 类原理、踩坑与对象语义详解
开发语言·c++
李游Leo21 分钟前
HarmonyOS 7 + ArkTS + NAPI 学习笔记:Native 模块桥接、CMake 构建与跨语言调用实践【鸿蒙心迹】
笔记·学习·harmonyos
爱写代码的小朋友36 分钟前
Windows 下 MSYS2 + MinGW64 安装与使用 OpenCV 全指南(含踩坑记录)
c++·人工智能·windows·opencv
重生之小比特1 小时前
【C++进阶】封装红⿊树实现mymap和myset
开发语言·c++
边境悍匪1 小时前
蜗牛学苑 Java 智能体学习 Day49|贯穿项目 5 订单下单业务 思维导图复盘
java·开发语言·spring boot·学习·阿里云
YYYing.1 小时前
【设计模式系列 (四) 】建造者模式
c++·后端·设计模式·建造者模式·c/c++
羑悻的小杀马特1 小时前
Docker高阶实战:从Redis集群到C++微服务,全面解析镜像优化与生产环境部署+镜像制作常见问题详解
c++·redis·docker·镜像制作·dockefile
别动我齐刘海1 小时前
ROS2 Jazzy + C++ 时间系统——Time / Clock / Duration
linux·c++·人工智能·学习·机器学习·机器人·自动驾驶
小范的技术工坊1 小时前
大模型学习操作文档(13个核心概念串讲)
人工智能·学习·算法·大模型
索端阳1 小时前
I.MX6ULL 裸机开发:LCD Framebuffer 与 RGB888 学习笔记
笔记·vscode·嵌入式硬件·学习