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...