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