C++实战--QT实现扫雷

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; // 1\2\3
private slots:
    void slot_lost();
    void slot_count();
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
};
#endif // MAINWINDOW_H

  • cmine.h
#ifndef CMINE_H
#define CMINE_H

#include <QWidget>
#include <QVector>
#include <QPainter>

/*
 board:
 '0'~'8': number of mines around
 'm': mine
 _board:
 '0': none
 'f': flag
 '?': ?
 'o': open
 */
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 mousepress_row;
    //int mousepress_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 // CMINE_H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值