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

相关推荐
ha2042894194几秒前
Linux操作系统学习记录之---TcpSocket
linux·网络·c++·学习
AI视觉网奇1 小时前
ue5 插件 WebSocket
c++·ue5
左直拳1 小时前
将c++程序部署到docker
开发语言·c++·docker
凉、介1 小时前
深入 QEMU Guest Agent:虚拟机内外通信的隐形纽带
c语言·笔记·学习·嵌入式·虚拟化
崇山峻岭之间1 小时前
Matlab学习记录31
开发语言·学习·matlab
恒者走天下2 小时前
AI智能体通讯项目(底层AI通讯协议实现)
c++
英雄各有见2 小时前
Chapter 5.1.1: 编写你的第一个GPU kernel——Cuda Basics
c++·gpu·cuda·hpc
石像鬼₧魂石2 小时前
22端口(OpenSSH 4.7p1)渗透测试完整复习流程(含实战排错)
大数据·网络·学习·安全·ubuntu
梵尔纳多2 小时前
OpenGL着色器语言(GLSL)
c++·opengl·着色器
net3m332 小时前
单片机屏幕多级菜单系统之当前屏幕号+屏幕菜单当前深度 机制
c语言·c++·算法