-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathboardgame.h
More file actions
69 lines (58 loc) · 2.96 KB
/
Copy pathboardgame.h
File metadata and controls
69 lines (58 loc) · 2.96 KB
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
68
69
#ifndef BOARDGAME_H
#define BOARDGAME_H
#include <qobject.h>
#include <qpixmap.h>
#include <qpainter.h>
#define COLOR_BOARD QColor(255, 200, 100)
#define COLOR_LINE QColor(100, 100, 100)
class BoardGame : public QObject
{
Q_OBJECT
public:
BoardGame(QObject *parent) : QObject(parent) {reset();}
virtual void reset(void);
virtual void refresh(QPixmap *cache);
//virtual void generalRefresh(QPixmap *cache);
virtual QPoint findPoint(const QSize& disp, const QPoint& pos);
virtual QPoint hoverCoordinate(QPixmap *cache, const QPoint& point) {return pointRect(cache->size(), point).topLeft();}
virtual void hoverPixmap(QPixmap *cache, QPixmap *hover, const int player);
virtual bool pointValid(const QPoint& p) const {return p.x() >= 0 && p.x() < size().width() && p.y() >= 0 && p.y() < size().height();}
virtual bool spaceAvailable(const int player) {return true;}
virtual bool place(const QPoint& point, const int player);
virtual QPoint ai(const int player) {return QPoint(-1, -1);}
virtual int win(void);
virtual bool mousePressEvent(const ButtonState button, const QPoint& point, const int player) {data.mouse = point; return true;}
virtual bool mouseMoveEvent(const ButtonState button, const QPoint& point, const int player) {return true;}
virtual bool mouseReleaseEvent(const ButtonState button, const QPoint& point, const int player) {return place(point, player);}
// Game type information
virtual QSize size(void) const {return QSize(1, 1);}
virtual int playerCount(void) const {return -1;}
virtual QString gameName(void) const {return tr("None");}
virtual QString winMessage(const int player, const QString msg) const;
virtual bool aiAvailable(void) const {return false;}
virtual QSize displaySize(const QSize& disp) const {return QSize(-1, -1);}
protected:
enum BoardTypes {NoLine, CenterLine, EdgeLine};
virtual int count(const QPoint& point, const QPoint& direction, const int player) const;
virtual QRect pointRect(const QSize& disp, const QPoint& point) const;
virtual void paintPoint(QPainter *painter, const QRect& rect, const int player) {painter->drawEllipse(rect);}
virtual void drawBackground(QPixmap *cache, QPainter *painter);
virtual void drawBoardLines(QPixmap *cache, QPainter *painter);
virtual void drawEdgeLines(QPixmap *cache, QPainter *painter);
virtual void drawPoint(QPixmap *cache, QPainter *painter, const QPoint& point, const int player);
virtual void drawLast(QPixmap *cache, QPainter *painter, const QPoint& point, const int player);
virtual void drawHover(QPixmap *hover, QPainter *painter, const int player);
// Game type information
virtual int winLength(void) const {return -1;}
virtual bool square(void) const {return size().width() == size().height();}
virtual BoardTypes boardType(void) const {return NoLine;}
virtual QColor playerColor(int player) const {return playerColors[player];}
struct {
int pos[64][64];
QPoint last, mouse;
} data;
private:
enum Players {Black = 0, White = 1};
static const QColor playerColors[2];
};
#endif