Time for action – implementing the game board class
Now we will focus on our data structure. Add a new private member to ChessBoard
, a vector of characters that will contain information about pieces on the board:
QVector<char> m_boardData;
Consider the following table that shows the piece type and the letters used for it:
Piece type |
White |
Black | |
---|---|---|---|
King |
K |
k | |
|
Queen |
Q |
q |
|
Rook |
R |
r |
|
Bishop |
B |
b |
|
Knight |
N |
n |
|
Pawn |
P |
P |
You can see that white pieces use upper-case letters and black pieces use lower-case variants of the same letters. In addition to that, we will use a space character (0x20 ASCII value) to denote that a field is empty. We will add a protected method for setting up an empty board based on the number of ranks and columns on the board and a boardReset()
signal to inform that the position on the board has changed:
void ChessBoard::initBoard() { m_boardData.fill(' ', ranks()*columns()); emit boardReset(); }
We can update our methods for setting...