C++实战–QT实现扫雷
- 效果
- mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<cmine.h>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
Cmine* cmine;
private:
Ui::MainWindow *ui;
int difficulty;
private slots:
void slot_lost();
void slot_count();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
};
#endif
#ifndef CMINE_H
#define CMINE_H
#include <QWidget>
#include <QVector>
#include <QPainter>
class Cmine : public QWidget
{
Q_OBJECT
public:
explicit Cmine(QWidget *parent = nullptr,int row=9,int col=9,int num_mine=10,int d=20);
QVector<QVector<char>> board;
QVector<QVector<char>> _board;
int row;
int col;
int mousemove_row;
int mousemove_col;
int d;
int count;
double offset=0.5;
int num_mine;
bool draw_mousemove;
bool gameover;
QPainter* painter;
void calculateMineAround();
void paintEvent(QPaintEvent *event) override;
void mouseMoveEvent(QMouseEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
void draw_Board();
void draw_None(int, int);
void draw_Ques(int, int);
void draw_Flag(int, int);
void draw_Open(int, int);
void draw_Mousemove(int,int);
QImage getTransparentImage(QImage image,QPoint point);
signals:
void sig_lost();
void sig_count();
};
#endif