项目介绍
项目展示:
界面1:
界面2:
项目步骤:
1、创建开始界面窗口
2、跳转到游戏界面窗口
2.1、跳转至游戏界面后,游戏界面初始化,即随机绘画图片(PS:需要按坐标依次绘画出坐标,其次连连看的绘画图片一定是成对出现,否则不能够实现游戏的成功)
2.2、跳转至游戏界面后,开辟线程,该线程中执行进度条的执行和lcd画面的执行
2.3、初始化成功后:捕捉鼠标事件,当点击的图片类型一致时,且满足消除规则后,将图片消除(此处采用的是一个数组来进行的,修改数值的值)
2.4、图片消除后,重新绘制画面,即可实现;且发出信号,设置得分树
3、当分数为100时或剩余时间为0时,游戏结束。
项目代码:
开始界面窗口头文件
#ifndef START_H
#define START_H
#include <QWidget>
#include <QPaintEvent>
#include <QPainter>
#include <QPen>
#include <QMouseEvent>
#include <QRandomGenerator>
#include <QDebug>
#include "mythread.h"
//设置每一个图标的长宽
const int IMAGE_WIDHT=50;
const int IMAGE_HEIGHT=50;
//行数和列数
const int ROW_COUNT=10;
const int COLUMN_COUNT=10;
namespace Ui {
class start;
}
class start : public QWidget
{
Q_OBJECT
public:
explicit start(QWidget *parent = nullptr);
~start();
void paintEvent(QPaintEvent *event); //绘画
void mousePressEvent(QMouseEvent *event); //鼠标点击
void mouseReleaseEvent(QMouseEvent *event);//鼠标释放
bool canBeLinked(int, int, int, int); //判断能否连接函数
bool inTwoLine(int , int , int , int );
bool inOneLine(int , int , int , int );
bool inThreeLine(int, int , int , int );
void newGame(); // 新游戏
void initdate();// 图片的初始化
//signals:
// void Win();
private slots:
void on_pushButton_clicked();
void setbol();
private:
Ui::start *ui;
bool showGameArea = false;
QVector<QVector<bool>>* isEmpty;
int clickCount; //鼠标点击次数
int firstClickX; //点击时的x坐标
int firstClickY; //点击时的Y坐标
int PixmapData[ROW_COUNT][COLUMN_COUNT]; //二维数组,用于记录图片的类型
int lab_data = 0; //lad的信号数字显示
bool win =false;
};
#endif // START_H
开始界面窗口代码:
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
op = new start;
setFixedSize(802,639);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_start_clicked()
{
//开始游戏
this->hide();
op->show();
}
void Widget::on_pushButton_quit_clicked()
{
this->close();
}
游戏界面窗口代码:
#ifndef START_H
#define START_H
#include