-
Notifications
You must be signed in to change notification settings - Fork 0
/
vboard.h
63 lines (54 loc) · 1.54 KB
/
vboard.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
#pragma once
#include <QWidget>
#include <QMessageBox>
#include <QStatusBar>
#include <QPainter>
#include <QMouseEvent>
#include <QTextEdit>
#include "mainwindow.h"
#include "ChuShogiBoard.h"
#include "ChessBoard.h"
#include "XiangqiBoard.h"
#include "ShogiBoard.h"
#include "MiniShogiBoard.h"
class VBoard : public QWidget
{
Q_OBJECT
public:
explicit VBoard(QWidget *parent = nullptr);
virtual ~VBoard();
vector<string> GetGameRecord() const;
Board* GetBoard() const;
GameVariant GetGameVariant() const;
void SetGameVariant(GameVariant gameVariant);
PieceColour GetCurrentPlayer() const;
void SetCurrentPlayer(PieceColour currentPlayer);
void SetTextEdit(QTextEdit *textEdit);
void SetStatusBar(QStatusBar *statusBar);
void SetMainWindow(QMainWindow *window);
void SetEngine(Engine *engine);
private:
void paintEvent(QPaintEvent *) override;
void mousePressEvent(QMouseEvent *event) override;
bool PossibleMove(int x, int y);
void RemoveMove(int x, int y);
void CalculateCheck(int oldX, int oldY, int newX, int newY);
void AddMove(PieceType p, int x1, int x2, int y1, int y2, char promotion);
Board *_board;
PieceColour _currentPlayer = White;
Piece *_currentPiece;
int _oldX = -1;
int _oldY = -1;
vector<pair<int, int>> _moves;
vector<tuple<int, int, int, int>> _opponentMoves;
QStatusBar *_statusBar;
QTextEdit *_textEdit;
QMainWindow *_window = nullptr;
GameVariant _gameVariant = Chess;
Engine *_engine = nullptr;
vector<string> _gameRecord;
signals:
public slots :
void readyReadStandardOutput();
void readyReadStandardError();
};