Repository navigation
Expand file tree
/
Copy pathchessboard.h
More file actions
57 lines (45 loc) · 1.78 KB
/
Copy pathchessboard.h
File metadata and controls
57 lines (45 loc) · 1.78 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
#ifndef CHESSBOARD_H
#define CHESSBOARD_H
#include <QFrame>
#include "chesspiece.h"
#include "addition.h"
#include <QVector>
namespace Ui {
class ChessBoard;
}
// Шахматная доска - опредение
// ---------------------------
class ChessBoard : public QFrame {
Q_OBJECT
public:
//получаем доступные для хода клетки
QVector<Area> getTurnArea(ChessPiece* piece);
explicit ChessBoard(QWidget* parent = 0);
~ChessBoard();
// Загрузка доски из файла
void loadFile(QString fileName);
void fillEndOfGame(PlayerSide side);
// Загрузка доски из ресурса
void loadRes(QString fileName);
void clearAvMoves();
// Доступные ходы
status avMoves[8][8];
protected:
void dragEnterEvent(QDragEnterEvent* event);
void dragMoveEvent(QDragMoveEvent* event);
void dropEvent(QDropEvent* event);
void mousePressEvent(QMouseEvent* event);
// Текущая фигура
ChessPiece* cur;
private:
//соответствие клеткам и фигурам, которые ими заняты, тоесть расположение фигур на доске
ChessPiece* boardMap[8][8];
//все поля которые не простреливаются фигурами противника, необходимо для определения ходов короля/шах/мат
bool endOfGame[8][8];
//получаем статус клетки занята/свободна/занята фигурой противника
status getPoleStatus(int row, int col, PlayerSide side);
QVector<Area> getDiagonalStatus(int row, int col, PlayerSide side);
QVector<Area> getHorizontalStatus(int row, int col, PlayerSide side);
Ui::ChessBoard* ui;
};
#endif // CHESSBOARD_H