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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/984706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端项目中export和import的作用

之前写过代码&#xff0c;但是那个时候是使用jspdivcss写页面&#xff0c;jquery负责页面数据展示和数据请求。近期在学习前端&#xff0c;发现有export和import&#xff0c;想起了之前没用过&#xff0c;就研究搜索了一下&#xff0c;发现这个是在 ES6中添加的&#xff0c;难怪…

JVM 类加载原理之双亲委派机制(JDK8版本)

对 Java 程序的运行过程而言&#xff0c;类的加载依赖类加载器完成&#xff0c;而在 Java 默认的类加载器又分为启动类加载器、扩展类加载器和应用程序类加载器三种&#xff0c;但是一个类通常仅仅需要被加载一次即可&#xff0c;双亲委派机制即规定各个类该被何种类加载器加载…

【每日学点HarmonyOS Next知识】对话框去掉圆角、数组拼接、自定义对话框依附某个控件、平移动画、页面栈管理

1、 HarmonyOS CustomDialog怎么去掉左右和底部的透明以及圆角&#xff1f; CustomDialog怎么去掉左右和底部的透明以及圆角 设置customStyle为true即可开启使用自定义样式。设置borderRadius为0去掉圆角属性。 属性用法参考文档&#xff1a;https://developer.huawei.com/c…

坐落于杭州的电商代运营公司品融电商

坐落于杭州的电商代运营公司品融电商 在中国电商行业蓬勃发展的浪潮中&#xff0c;品融电商&#xff08;PINKROON&#xff09;作为一家扎根杭州的新锐品牌管理公司&#xff0c;凭借其独特的全域增长方法论和实战经验&#xff0c;迅速崛起为行业标杆。自2020年成立以来&#x…

【python爬虫】酷狗音乐爬取练习

注意&#xff1a;本次爬取的音乐仅有1分钟试听&#xff0c;仅作学习爬虫的原理&#xff0c;完整音乐需要自行下载客户端。 一、 初步分析 登陆酷狗音乐后随机选取一首歌&#xff0c;在请求里发现一段mp3文件&#xff0c;复制网址&#xff0c;确实是我们需要的url。 复制音频的…

Vue3 路由的历史记录 如何不允许浏览器前进后退 在函数中使用路由切换组件 路由的重定向

路由的历史记录模式 第一种push push会保留所有的切换记录&#xff0c;通过操作浏览器的前进后退&#xff0c;可以返回刚才浏览的页面 第二章replace replace不会保留路由的切换记录&#xff0c;不支持浏览器的前进后退 在函数中使用路由切换组件 页面挂载3秒后&#x…

【CSS3】金丹篇

目录 标准流概念元素类型及排列规则块级元素行内元素行内块元素 标准流的特点打破标准流 浮动基本使用清除浮动额外标签法单伪元素法双伪元素法&#xff08;推荐&#xff09;overflow 法 Flex 布局Flex 组成主轴对齐方式侧轴对齐方式修改主轴方向弹性盒子伸缩比弹性盒子换行行对…

解锁DeepSpeek-R1大模型微调:从训练到部署,打造定制化AI会话系统

目录 1. 前言 2.大模型微调概念简述 2.1. 按学习范式分类 2.2. 按参数更新范围分类 2.3. 大模型微调框架简介 3. DeepSpeek R1大模型微调实战 3.1.LLaMA-Factory基础环境安装 3.1大模型下载 3.2. 大模型训练 3.3. 大模型部署 3.4. 微调大模型融合基于SpirngBootVue2…

深入理解string:从模拟实现看本质

文章目录 摘要&#xff1a;一、引言二、string的模拟实现2.1 string类的定义 三、深拷贝和深赋值3.1 深浅拷贝构造函数3.2 深赋值运算符 四、总结五、附录5.1 完整代码6.2 测试用例 六、致谢 摘要&#xff1a; 本文将通过模拟实现一个简单的 String 类&#xff0c;深入探讨字符…

Unity组件TrailRenderer屏幕滑动拖尾

Unity组件TrailRenderer屏幕滑动拖尾 介绍制作总结 介绍 今天要做一个拖动效果&#xff0c;正好用到了TrailRenderer这个组件&#xff0c;正好分享一下 效果参考如下&#xff1a; 制作 1.创建空物体TrailObject添加组件TrailRenderer 下面的材质可以根据自己想要制作的效果去…

laravel中 添加公共/通用 方法/函数

一&#xff0c;现在app 下面创建Common目录&#xff0c;然后在创建Common.php 文件 二&#xff0c;修改composer.json文件 添加这个到autoload 中 "files": ["app/Common/Common.php"]"autoload": {"psr-4": {"App\\": &quo…

C#程序加密与解密Demo程序示例

目录 一、加密程序功能介绍 1、加密用途 2、功能 3、程序说明 4、加密过程 5、授权的注册文件保存方式 二、加密程序使用步骤 1、步骤一 ​编辑2、步骤二 3、步骤三 4、步骤四 三、核心代码说明 1、获取电脑CPU 信息 2、获取硬盘卷标号 3、机器码生成 3、 生成…

批量将 Excel 转换 PDF/Word/CSV以及图片等其它格式

Excel 格式转换是我们工作过程当中非常常见的一个需求&#xff0c;我们通常需要将 Excel 转换为其他各种各样的格式。比如将 Excel 转换为 PDF、比如说将 Excel 转换为 Word、再比如说将 Excel文档转换为图片等等。 这些操作对我们来讲都不难&#xff0c;因为我们通过 Office 都…

【报错】微信小程序预览报错”60001“

1.问题描述 我在微信开发者工具写小程序时&#xff0c;使用http://localhost:8080是可以请求成功的&#xff0c;数据全都可以无报错&#xff0c;但是点击【预览】&#xff0c;用手机扫描二维码浏览时&#xff0c;发现前端图片无返回且报错60001&#xff08;打开开发者模式查看日…

概念|RabbitMQ 消息生命周期 待消费的消息和待应答的消息有什么区别

目录 消息生命周期 一、消息创建与发布阶段 二、消息路由与存储阶段 三、消息存活与过期阶段 四、消息投递与消费阶段 五、消息生命周期终止 关键配置建议 待消费的消息和待应答的消息 一、待消费的消息&#xff08;Unconsumed Messages&#xff09; 二、待应答的消息…

电路原理(电容 集成电路NE555)

电容 1.特性&#xff1a;充放电&#xff0c;隔直流&#xff0c;通交流 2.电容是通过聚集正负电荷来存储电能的 3.电容充放电过程可等效为导通回路 4.多电容并联可以把容量叠加&#xff0c;但是多电容串联就不会&#xff0c;只会叠加电容的耐压值。 6.电容充放电时相当于通路&a…

Manus:成为AI Agent领域的标杆

一、引言 官网&#xff1a;Manus 随着人工智能技术的飞速发展&#xff0c;AI Agent&#xff08;智能体&#xff09;作为人工智能领域的重要分支&#xff0c;正逐渐从概念走向现实&#xff0c;并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中&#xff0c;Manus以其独…

@ComponentScan和@SpringBootApplication的scanBasePackages 同时使用

一、SpringBootApplication(scanBasePackages {"com.xx","com.xxx"}) 从注释里可以看出&#xff0c;SpringBootApplication的scanBasePackages 和ComponentScan 等同。 二、ComponentScan 三、对比 两者作用相同&#xff0c;如果不指定包名&#xff0c;默…

记录排查服务器CPU负载过高

1.top 命令查看cpu占比过高的进程id 这里是 6 2. 查看进程中占用CPU过高的线程 id 这里是9 top -H -p 6 ps -mp 6 -o THREAD,tid,time 使用jstack 工具 产看进程的日志 需要线程id转换成16进制 jstack 6 | grep “0x9” 4.jstack 6 可以看进程的详细日志 查看日志发现是 垃圾回…

处理动态分页:自动翻页与增量数据抓取策略-数据议事厅

一、案例场景 Lily&#xff08;挥舞着数据报表&#xff09;&#xff1a;“用户反馈我们的股票舆情分析总是缺失最新跟帖&#xff01;这些动态分页像狡猾的狐狸&#xff0c;每次抓取都漏掉关键数据&#xff01;” 小王&#xff08;调试着爬虫代码&#xff09;&#xff1a;“传…