-
Notifications
You must be signed in to change notification settings - Fork 0
/
cell.h
67 lines (54 loc) · 1.16 KB
/
cell.h
1
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef CELL_H
#define CELL_H
#include <QObject>
#include <QLabel>
#include <QList>
#include <QHoverEvent>
#include "headerwrapper.h"
enum Status {
virgin,
flagged,
questioned,
revealed
};
struct Coordinate {
int atRow;
int atCol;
Coordinate(int row, int col) {
atRow = row;
atCol = col;
}
};
class Cell : public QLabel
{
Q_OBJECT
public:
Coordinate coordinate;
int content;//0 - 8 means the numbers of mines around the cell.
//-1 means it's a mine itself and -2 means it hasn't been initialized by the AI yet.
bool isMine;
Status status;
void setStatus(Status);
Cell(int atRow, int atCol);
FlatList *cellsAround();
Cell *NorthWest,
*North,
*NorthEast,
*East,
*SouthEast,
*South,
*SouthWest,
*West;
signals:
void hovered();
void clicked(Cell *, QMouseEvent *);
void clicked_double(Cell *, QMouseEvent *);
void statusChanged();
public slots:
void refreshUI();
protected:
void mousePressEvent(QMouseEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
};
#endif // CELL_H