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

news/2025/3/11 14:24:36/

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


http://www.ppmy.cn/news/1578372.html

相关文章

聊聊Redis

Redis是CP还是AP&#xff1f; 首先我们来聊一下&#xff0c;Redis是AP还是CP&#xff0c;我个人偏向于AP&#xff0c;在稍微大型的项目中&#xff0c;Redis不可能单节点部署的&#xff0c;如何Redis挂了&#xff0c;系统的效率就会很慢很慢&#xff0c;特别是有短时间高并发的系…

Python----数据可视化(Seaborn二:绘图一)

常见方法 barplot方法 单独绘制条形图 catplot方法 可以条形图、散点图、盒图、小提亲图、等 countplot方法 统计数量 一、柱状图 seaborn.barplot(dataNone, xNone, yNone, hueNone, colorNone, paletteNone) 函数描述data用于绘图的数据集。x用于绘制长格式数据的输入。…

16 HarmonyOS NEXT UVList组件开发指南(三)

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT UVList组件开发指南(三) 第三篇&#xff1a;UVList组件使用方法与实际应用 1. 基础使用方法 1.1 引入组件 使用UVList组件前&a…

系统架构设计师—系统架构设计篇—基于体系结构的软件开发方法

文章目录 概述基于体系结构的开发模型-ABSDM体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构演化 概述 基于体系结构&#xff08;架构&#xff09;的软件设计&#xff08;Architecture-Based Software Design&#xff0c;ABSD&#xff09;方法。 AB…

Stable Diffusion模型高清算法模型类详解

Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4&#xff0c;分块尺寸768px★★★★★☆皮肤纹理细腻&#xff0c;但高对比场景易出现…

mac安装nvm=>node=>nrm

下载并安装 NVM 运行以下命令下载并安装 NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash 配置环境变量 vim ~/.zshrc 按 i 将如下代码复制进去&#xff0c;controlc &#xff0c;再按 :wq完成编辑 export NVM_DIR…

Django 初始化导入数据详解

Django 初始化导入数据详解 在 Django 项目中&#xff0c;初始化数据导入是一个常见的需求&#xff0c;特别是在开发阶段或者部署新环境时&#xff0c;通常需要一些预置的数据来确保应用能够正常运行。Django 提供了一种高效的方法来加载初始化数据&#xff0c;即通过 fixture…

第二节:网络设备与拓扑结构详解:从集线器到路由器

网络设备与拓扑结构详解:从集线器到路由器 在网络世界中,网络设备和拓扑结构是构建网络的基础。无论是小型家庭网络还是大型企业网络,都需要依赖各种网络设备和合理的拓扑结构来实现高效、稳定的通信。本文将从集线器、交换机、路由器等常见网络设备的工作原理入手,详细介…