08-翻金币游戏

it2026-02-23  5

mianscene类:游戏的开始界面

mypushbutton类:为开始按钮和返回按钮封装的无边框的按钮控件

chooselevelscene类:选择游戏关卡的界面

playscene类:游戏的出场景

mycoin类:为金币封装的按钮

dataconfig类:游戏配置类

 

mainscene.h

#ifndef MAINSCENE_H #define MAINSCENE_H #include <QMainWindow> #include "chooselevelscene.h" namespace Ui { class MainScene; } class MainScene : public QMainWindow { Q_OBJECT public: explicit MainScene(QWidget *parent = 0); ~MainScene(); void paintEvent(QPaintEvent *event); ChooseLevelScene *chooseScene = NULL; private: Ui::MainScene *ui; }; #endif // MAINSCENE_H

mainscene.cpp

#include "mainscene.h" #include "ui_mainscene.h" #include <QPainter> #include "mypushbutton.h" #include <QDebug> #include <QTimer> #include <QSound> MainScene::MainScene(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainScene) { ui->setupUi(this); //配置主场景 //设置固定大小 setFixedSize(320,588); //设置图标 setWindowIcon(QIcon(":/res/Coin0001.png")); //设置标题 setWindowTitle("翻金币主场景"); connect(ui->actionquit, &QAction::triggered, [=](){ this->close(); }); //开始音效 QSound *startSound = new QSound(":/res/TapButtonSound.wav", this); //开始按钮 MyPushButton *startBtn = new MyPushButton(":/res/MenuSceneStartButton.png"); startBtn->setParent(this); startBtn->move(this->width() * 0.5 - startBtn->width() * 0.5, this->height() * 0.7); //实例化选择关卡场景 this->chooseScene = new ChooseLevelScene; //监听选择关卡的信号 //监听代码要写在这里,不然没点击一次开始按钮就会执行一次 connect(chooseScene, &ChooseLevelScene::chooseSceneBack, this, [=](){ this->setGeometry(chooseScene->geometry()); chooseScene->hide(); this->show(); }); connect(startBtn, &MyPushButton::clicked, [=](){ // qDebug() << "点击了开始按钮"; //播放开始音效资源 startSound->play(); startBtn->zoom1(); startBtn->zoom2(); //延时进入到选择关卡中 QTimer::singleShot(500, this, [=](){ //设置chooseScene场景的位置 chooseScene->setGeometry(this->geometry()); //自身隐藏 this->hide(); //显示 chooseScene->show(); }); }); } void MainScene::paintEvent(QPaintEvent *event) { QPainter painter(this); QPixmap pix; pix.load(":/res/PlayLevelSceneBg.png"); //自适应 painter.drawPixmap(0, 0, this->width(), this->height(), pix); //画背景上的图标 pix.load(":/res/Title.png"); pix = pix.scaled(pix.width() *0.5, pix.height()*0.5); painter.drawPixmap(10,30,pix); } MainScene::~MainScene() { delete ui; }

mypushbutton.h

#ifndef MYPUSHBUTTON_H #define MYPUSHBUTTON_H #include <QPushButton> class MyPushButton : public QPushButton { Q_OBJECT public: // explicit MyPushButton(QWidget *parent = nullptr); MyPushButton(QString normalImg, QString pressImg = ""); QString nornalImgPath; QString PressImgPath; void mousePressEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e); //弹跳特效 void zoom1(); //向下跳 void zoom2(); //向上跳 signals: public slots: }; #endif // MYPUSHBUTTON_H

mypushbutton.cpp

#include "mypushbutton.h" #include <QDebug> #include <QPropertyAnimation> MyPushButton::MyPushButton(QString normalImg, QString pressImg) { this->nornalImgPath = normalImg; this->PressImgPath = pressImg; QPixmap pix; bool ret = pix.load(normalImg); if (!ret) { qDebug() << "图片加载失败"; return; } //设置图片固定大小 this->setFixedSize(pix.width(), pix.height()); //设置不规则图片样式 this->setStyleSheet("QPushButton{border:0px}"); //设置图标 this->setIcon(pix); //设置图标大小 this->setIconSize(QSize(pix.width(), pix.height())); } void MyPushButton::zoom1() { //创建动态对象 QPropertyAnimation *animation = new QPropertyAnimation(this, "geometry"); //设置动画的时间间隔 animation->setDuration(200); //起始位置 animation->setStartValue(QRect(this->x(), this->y(), this->width(), this->height())); //结束为止 animation->setEndValue(QRect(this->x(), this->y()+10, this->width(), this->height())); //设置弹跳曲线 animation->setEasingCurve(QEasingCurve::OutBounce); //执行动画 animation->start(); } void MyPushButton::zoom2() { //创建动态对象 QPropertyAnimation *animation = new QPropertyAnimation(this, "geometry"); //设置动画的时间间隔 animation->setDuration(200); //起始位置 animation->setStartValue(QRect(this->x(), this->y()+10, this->width(), this->height())); //结束为止 animation->setEndValue(QRect(this->x(), this->y(), this->width(), this->height())); //设置弹跳曲线 animation->setEasingCurve(QEasingCurve::OutBounce); //执行动画 animation->start(); } void MyPushButton::mousePressEvent(QMouseEvent *e) { if(this->PressImgPath != "") { QPixmap pix; bool ret = pix.load(this->PressImgPath); if (!ret) { qDebug() << "图片加载失败"; return; } //设置图片固定大小 this->setFixedSize(pix.width(), pix.height()); //设置不规则图片样式 this->setStyleSheet("QPushButton{border:0px}"); //设置图标 this->setIcon(pix); //设置图标大小 this->setIconSize(QSize(pix.width(), pix.height())); } //让父类执行其他的内容 return QPushButton::mousePressEvent(e); } void MyPushButton::mouseReleaseEvent(QMouseEvent *e) { if(this->PressImgPath != "") { QPixmap pix; bool ret = pix.load(this->nornalImgPath); if (!ret) { qDebug() << "图片加载失败"; return; } //设置图片固定大小 this->setFixedSize(pix.width(), pix.height()); //设置不规则图片样式 this->setStyleSheet("QPushButton{border:0px}"); //设置图标 this->setIcon(pix); //设置图标大小 this->setIconSize(QSize(pix.width(), pix.height())); } //让父类执行其他的内容 return QPushButton::mouseReleaseEvent(e); } //MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent) //{ //}

chooselevelscene.h

#ifndef CHOOSELEVELSCENE_H #define CHOOSELEVELSCENE_H #include <QMainWindow> #include <playscene.h> class ChooseLevelScene : public QMainWindow { Q_OBJECT public: explicit ChooseLevelScene(QWidget *parent = nullptr); void paintEvent(QPaintEvent *event); //游戏场景指针 PlayScene *play = NULL; signals: void chooseSceneBack(); public slots: }; #endif // CHOOSELEVELSCENE_H

chooselevelscene.cpp

#include "chooselevelscene.h" #include <QMenuBar> #include <QPainter> #include "mypushbutton.h" #include <QDebug> #include <QTimer> #include <QLabel> #include <QSound> ChooseLevelScene::ChooseLevelScene(QWidget *parent) : QMainWindow(parent) { this->setFixedSize(320, 588); this->setWindowIcon(QPixmap(":/res/Coin0001.png")); this->setWindowTitle("选择关卡场景"); QMenuBar *bar = menuBar(); setMenuBar(bar); QMenu *startMenu = bar->addMenu("开始"); QAction *quitAction = startMenu->addAction("退出"); connect(quitAction, &QAction::triggered, [=](){ this->close(); }); //选择关卡音效 QSound *chooseSound = new QSound(":/res/TapButtonSound.wav", this); //返回按钮音效 QSound *backSound = new QSound(":/res/BackButtonSound.wav", this); //返回按钮 MyPushButton *backBtn = new MyPushButton(":/res/BackButton.png", ":/res/BackButtonSelected.png"); backBtn->setParent(this); backBtn->move(this->width() - backBtn->width(), this->height() - backBtn->height()); connect(backBtn, &MyPushButton::clicked, [=](){ // qDebug() << "点击了返回按钮"; backSound->play(); //延时返回 QTimer::singleShot(200, this, [=](){ emit this->chooseSceneBack(); }); }); //创建选择关卡的按钮 for (int i = 0; i < 20; i++) { MyPushButton *menuBtn = new MyPushButton(":/res/LevelIcon.png"); menuBtn->setParent(this); menuBtn->move(25 + i%4 * 70, 130 + i / 4 * 70); //监听每个按钮的点击事件 connect(menuBtn, &MyPushButton::clicked, [=](){ chooseSound->play(); QString str = QString("您选择的是第 %1 关").arg(i + 1); qDebug() << str; //进入到游戏场景 this->hide(); this->play = new PlayScene(i + 1); //设置游戏场景的初始位置 play->setGeometry(this->geometry()); play->show(); connect(play, &PlayScene::chooseSceneBack, [=](){ this->setGeometry(play->geometry()); this->show(); // 因为每关不一样,所以要delete掉比较好 delete play; play = NULL; }); }); QLabel *label = new QLabel; label->setParent(this); label->setFixedSize(menuBtn->width(), menuBtn->height()); label->setText(QString::number(i+1)); label->move(25 + i%4 * 70, 130 + i / 4 * 70); //设置 水平居中和垂直居中 label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); //设置鼠标穿透 51号属性 label->setAttribute(Qt::WA_TransparentForMouseEvents); } } void ChooseLevelScene::paintEvent(QPaintEvent *event) { //加载背景 QPainter painter(this); QPixmap pix; pix.load(":/res/OtherSceneBg.png"); painter.drawPixmap(0, 0, this->width(), this->height(), pix); //加载标题 pix.load(":/res/Title.png"); painter.drawPixmap(this->width() * 0.5 - pix.width() * 0.5, 30, pix.width(), pix.height(), pix); }

mycoin.h

#ifndef MYCOIN_H #define MYCOIN_H #include <QPushButton> #include <QTimer> class MyCoin : public QPushButton { Q_OBJECT public: // explicit MyCoin(QWidget *parent = nullptr); //参数代表传入的是金币路径还是银币路径 MyCoin(QString btnImg); //金币的属性 int posX; int posY; //金币的正反面 正true 反false bool flag; //改变标志的方法 void changeFlag(); QTimer *timer1; QTimer *timer2; int min = 1; int max = 8; //执行动画的标志,防止在未执行完动画的时候点击按钮 bool isAnimation = false; //重写按下 释放 void mousePressEvent(QMouseEvent *e); //用于胜利后每个按钮停止翻转 bool isWin = false; signals: public slots: }; #endif // MYCOIN_H

mycoin.cpp

#include "mycoin.h" #include <QDebug> MyCoin::MyCoin(QString btnImg) { QPixmap pix; bool ret = pix.load(btnImg); if (!ret) { QString str= QString("图片 %1 加载失败").arg(btnImg); qDebug() << str; return; } this->setFixedSize(pix.width(), pix.height()); this->setStyleSheet("QPushButton{border:0px;}"); this->setIcon(pix); this->setIconSize(QSize(pix.width(), pix.height())); //初始化定时器对象 this->timer1 = new QTimer(this); this->timer2 = new QTimer(this); connect(timer1, &QTimer::timeout, [=](){ QPixmap pix; QString str = QString(":/res/Coin000%1.png").arg(this->min++); pix.load(str); this->setFixedSize(pix.width(), pix.height()); this->setStyleSheet("QPushButton{border:0px;}"); this->setIcon(pix); this->setIconSize(QSize(pix.width(), pix.height())); //判断如果翻完了,将min重置为1 if (this->min > this->max) { this->min = 1; this->isAnimation = false; timer1->stop(); } }); connect(timer2, &QTimer::timeout, [=](){ QPixmap pix; QString str = QString(":/res/Coin000%1.png").arg(this->max--); pix.load(str); this->setFixedSize(pix.width(), pix.height()); this->setStyleSheet("QPushButton{border:0px;}"); this->setIcon(pix); this->setIconSize(QSize(pix.width(), pix.height())); //判断如果翻完了,将min重置为1 if (this->max < this->min) { this->max = 8; this->isAnimation = false; timer2->stop(); } }); } void MyCoin::changeFlag() { if (this->flag) { timer1->start(30); this->isAnimation = true; this->flag = false; } else { timer2->start(30); this->isAnimation = true; this->flag = true; } } void MyCoin::mousePressEvent(QMouseEvent *e) { if (this->isAnimation || this->isWin) { //胜利后屏蔽点击 return; } else { QPushButton::mousePressEvent(e); } } //MyCoin::MyCoin(QWidget *parent) : QPushButton(parent) //{ //}

playscene.h

#ifndef PLAYSCENE_H #define PLAYSCENE_H #include <QMainWindow> #include <mycoin.h> class PlayScene : public QMainWindow { Q_OBJECT public: // explicit PlayScene(QWidget *parent = nullptr); PlayScene(int levelNum); int levelIndex; void paintEvent(QPaintEvent *event); int gameArray[4][4]; MyCoin *coinBtn[4][4]; bool isWin; signals: void chooseSceneBack(); public slots: }; #endif // PLAYSCENE_H

playscene.cpp

#include "playscene.h" #include <QDebug> #include <QMenuBar> #include <QPainter> #include "mypushbutton.h" #include <QTimer> #include <QLabel> #include "mycoin.h" #include "dataconfig.h" #include <QPropertyAnimation> #include <QSound> PlayScene::PlayScene(int levelNum) { QString str = QString("进入了第 1% 关").arg(levelNum); qDebug() << str; this->levelIndex = levelNum; //初始化游戏场景 this->setFixedSize(320,588); this->setWindowIcon(QPixmap(":/res/Coin0001.png")); this->setWindowTitle("翻金币场景"); //点击按钮 实现退出游戏 QMenuBar *bar = menuBar(); setMenuBar(bar); QMenu *startMenu = bar->addMenu("开始"); QAction *quitAction = startMenu->addAction("退出"); connect(quitAction, &QAction::triggered, [=](){ this->close(); }); //添加音效 QSound *backSound = new QSound(":/res/BackButtonSound.wav", this); QSound *flipSound = new QSound(":/res/ConFlipSound.wav", this); QSound *winSound = new QSound(":/res/LevelWinSound.wav", this); //返回按钮 MyPushButton *backBtn = new MyPushButton(":/res/BackButton.png", ":/res/BackButtonSelected.png"); backBtn->setParent(this); backBtn->move(this->width() - backBtn->width(), this->height() - backBtn->height()); connect(backBtn, &MyPushButton::clicked, [=](){ qDebug() << "返金币场景中点击了返回按钮"; backSound->play(); QTimer::singleShot(200, this, [=](){ emit this->chooseSceneBack(); }); }); //显示当前的关卡数 QLabel *label = new QLabel; label->setParent(this); QFont font; font.setFamily("华文新魏"); font.setPointSize(20); label->setFont(font); QString str1 = QString("Level:%1").arg(this->levelIndex); label->setText(str1); label->setGeometry(30, this->height() - 50, 120, 50); //初始化每个关卡的二维数组 dataConfig config; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { this->gameArray[i][j] = config.mData[this->levelIndex][i][j]; } } //胜利图片的显示 QLabel *winLabel = new QLabel; QPixmap pix; pix.load(":/res/LevelCompletedDialogBg.png"); winLabel->setGeometry(0,0,pix.width(),pix.height()); winLabel->setPixmap(pix); winLabel->setParent(this); winLabel->move((this->width() - pix.width()) * 0.5, -pix.height()); //显示金币背景图案 for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { QPixmap pix = QPixmap(":/res/BoardNode.png"); QLabel *label = new QLabel; label->setGeometry(0,0,pix.width(),pix.height()); //几何 label->setPixmap(pix); label->setParent(this); label->move(57 + i*50, 200 + j*50); //创建金币 if (this->gameArray[i][j] == 1) { //显示金币 str = ":/res/Coin0001.png"; } else { //显示银币 str = ":/res/Coin0008.png"; } MyCoin *coin = new MyCoin(str); coin->setParent(this); coin->move(59 + i*50, 204 + j*50); //给金币的属性赋值 coin->posX = i; coin->posY = j; coin->flag = this->gameArray[i][j]; //1正面 0反面 //将金币放入金币的二维数组,以便后期的维护 coinBtn[i][j] = coin; //点击金币 进行翻转 connect(coin, &MyCoin::clicked, [=](){ //点击后仅用所有金币,以防胜利时手快点击其他的按钮再进行无用的反转 flipSound->play(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { this->coinBtn[i][j]->isWin = true; } } coin->changeFlag(); this->gameArray[i][j] = this->gameArray[i][j] == 0 ? 1 : 0; //翻转周围的金币,延时翻转 QTimer::singleShot(300, this, [=](){ if (coin->posX + 1 <= 3) { //右侧 //翻转 coinBtn[coin->posX + 1][coin->posY]->changeFlag(); //维护正反面数组 this->gameArray[coin->posX + 1][coin->posY] = this->gameArray[coin->posX + 1][coin->posY] == 0 ? 1 : 0; } if (coin->posX - 1 >= 0) { //左侧 coinBtn[coin->posX - 1][coin->posY]->changeFlag(); this->gameArray[coin->posX - 1][coin->posY] = this->gameArray[coin->posX - 1][coin->posY] == 0 ? 1 : 0; } if (coin->posY + 1 <= 3) { //下侧 coinBtn[coin->posX][coin->posY + 1]->changeFlag(); this->gameArray[coin->posX][coin->posY + 1] = this->gameArray[coin->posX][coin->posY + 1] == 0 ? 1 : 0; } if (coin->posY - 1 >= 0) { //上侧 coinBtn[coin->posX][coin->posY - 1]->changeFlag(); this->gameArray[coin->posX][coin->posY - 1] = this->gameArray[coin->posX][coin->posY - 1] == 0 ? 1 : 0; } //翻转完成后解开禁用 for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { this->coinBtn[i][j]->isWin = false; } } //判断是否胜利 this->isWin = true; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (coinBtn[i][j]->flag == false) { //flag是coin中表示正反面的标志 this->isWin = false; break; } } } if (this->isWin == true) { winSound->play(); qDebug() << "游戏胜利"; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { coinBtn[i][j]->isWin = true; } } //将胜利的图片移动下来 QPropertyAnimation *animation = new QPropertyAnimation(winLabel, "geometry"); //设置时间间隔 animation->setDuration(1000); //设置开始位置 animation->setStartValue(QRect(winLabel->x(), winLabel->y(), winLabel->width(), winLabel->height())); //设置结束位置 animation->setEndValue(QRect(winLabel->x(), winLabel->y()+114, winLabel->width(), winLabel->height())); //设置缓和曲线 animation->setEasingCurve(QEasingCurve::OutBounce); //执行动画 animation->start(); } }); }); } } } void PlayScene::paintEvent(QPaintEvent *event) { QPainter painter(this); QPixmap pix; pix.load(":/res/PlayLevelSceneBg.png"); painter.drawPixmap(0,0,this->width(),this->height(),pix); pix.load(":/res/Title.png"); pix = pix.scaled(pix.width()*0.5, pix.height()*0.5); painter.drawPixmap(10, 30, pix.width(), pix.height(), pix); } //PlayScene::PlayScene(QWidget *parent) : QMainWindow(parent) //{ //}

dataconfig.h

#ifndef DATACONFIG_H #define DATACONFIG_H #include <QObject> #include <QMap> #include <QVector> class dataConfig : public QObject { Q_OBJECT public: explicit dataConfig(QObject *parent = 0); public: QMap<int, QVector< QVector<int> > >mData; signals: public slots: }; #endif // DATACONFIG_H

dataconfig.cpp

#include "dataconfig.h" #include <QDebug> dataConfig::dataConfig(QObject *parent) : QObject(parent) { int array1[4][4] = {{1, 1, 1, 1}, {1, 1, 0, 1}, {1, 0, 0, 0}, {1, 1, 0, 1} } ; QVector< QVector<int>> v; for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array1[i][j]); } v.push_back(v1); } mData.insert(1,v); int array2[4][4] = { {1, 0, 1, 1}, {0, 0, 1, 1}, {1, 1, 0, 0}, {1, 1, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array2[i][j]); } v.push_back(v1); } mData.insert(2,v); int array3[4][4] = { {0, 0, 0, 0}, {0, 1, 1, 0}, {0, 1, 1, 0}, {0, 0, 0, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array3[i][j]); } v.push_back(v1); } mData.insert(3,v); int array4[4][4] = { {0, 1, 1, 1}, {1, 0, 0, 1}, {1, 0, 1, 1}, {1, 1, 1, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array4[i][j]); } v.push_back(v1); } mData.insert(4,v); int array5[4][4] = { {1, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array5[i][j]); } v.push_back(v1); } mData.insert(5,v); int array6[4][4] = { {1, 0, 0, 1}, {0, 1, 1, 0}, {0, 1, 1, 0}, {1, 0, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array6[i][j]); } v.push_back(v1); } mData.insert(6,v); int array7[4][4] = { {0, 1, 1, 1}, {1, 0, 1, 1}, {1, 1, 0, 1}, {1, 1, 1, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array7[i][j]); } v.push_back(v1); } mData.insert(7,v); int array8[4][4] = { {0, 1, 0, 1}, {1, 0, 0, 0}, {0, 0, 0, 1}, {1, 0, 1, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array8[i][j]); } v.push_back(v1); } mData.insert(8,v); int array9[4][4] = { {1, 0, 1, 0}, {1, 0, 1, 0}, {0, 0, 1, 0}, {1, 0, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array9[i][j]); } v.push_back(v1); } mData.insert(9,v); int array10[4][4] = { {1, 0, 1, 1}, {1, 1, 0, 0}, {0, 0, 1, 1}, {1, 1, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array10[i][j]); } v.push_back(v1); } mData.insert(10,v); int array11[4][4] = { {0, 1, 1, 0}, {1, 0, 0, 1}, {1, 0, 0, 1}, {0, 1, 1, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array11[i][j]); } v.push_back(v1); } mData.insert(11,v); int array12[4][4] = { {0, 1, 1, 0}, {0, 0, 0, 0}, {1, 1, 1, 1}, {0, 0, 0, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array12[i][j]); } v.push_back(v1); } mData.insert(12,v); int array13[4][4] = { {0, 1, 1, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 1, 1, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array13[i][j]); } v.push_back(v1); } mData.insert(13,v); int array14[4][4] = { {1, 0, 1, 1}, {0, 1, 0, 1}, {1, 0, 1, 0}, {1, 1, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array14[i][j]); } v.push_back(v1); } mData.insert(14,v); int array15[4][4] = { {0, 1, 0, 1}, {1, 0, 0, 0}, {1, 0, 0, 0}, {0, 1, 0, 1}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array15[i][j]); } v.push_back(v1); } mData.insert(15,v); int array16[4][4] = { {0, 1, 1, 0}, {1, 1, 1, 1}, {1, 1, 1, 1}, {0, 1, 1, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array16[i][j]); } v.push_back(v1); } mData.insert(16,v); int array17[4][4] = { {0, 1, 1, 1}, {0, 1, 0, 0}, {0, 0, 1, 0}, {1, 1, 1, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array17[i][j]); } v.push_back(v1); } mData.insert(17,v); int array18[4][4] = { {0, 0, 0, 1}, {0, 0, 1, 0}, {0, 1, 0, 0}, {1, 0, 0, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array18[i][j]); } v.push_back(v1); } mData.insert(18,v); int array19[4][4] = { {0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array19[i][j]); } v.push_back(v1); } mData.insert(19,v); int array20[4][4] = { {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}} ; v.clear(); for(int i = 0 ; i < 4;i++) { QVector<int>v1; for(int j = 0 ; j < 4;j++) { v1.push_back(array20[i][j]); } v.push_back(v1); } mData.insert(20,v); //测试数据 // for( QMap<int, QVector< QVector<int> > >::iterator it = mData.begin();it != mData.end();it++ ) // { // for(QVector< QVector<int> >::iterator it2 = (*it).begin(); it2!= (*it).end();it2++) // { // for(QVector<int>::iterator it3 = (*it2).begin(); it3 != (*it2).end(); it3++ ) // { // qDebug() << *it3 ; // } // } // qDebug() << endl; // } }

 

 

 

 

最新回复(0)