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