dev: added Pawn movement checks, working through legal move logic

This commit is contained in:
A.M. Rowsell 2025-08-06 09:27:13 -04:00
commit 016654da2f
Signed by untrusted user who does not match committer: amr
GPG key ID: E0879EDBDB0CA7B1
2 changed files with 102 additions and 2 deletions

View file

@ -48,12 +48,13 @@ struct Move {
};
class Piece {
friend class Board;
friend class Board;
protected:
PieceColour colour;
bool hasMoved = false;
public:
Piece(PieceColour pColour) : colour(pColour) {
}
virtual ~Piece();
@ -62,17 +63,34 @@ public:
PieceColour getColour() const {
return colour;
}
bool checkIfMoved() const {
return hasMoved;
}
};
class King : public Piece {
friend class Board;
public:
King(PieceColour colour) : Piece(colour) {
}
virtual std::vector<Move> getLegalMoves(const Square &from, const Board &board) const override;
bool checkForCheck() const {
return inCheck;
}
bool checkForCastle() const {
return canCastle;
}
protected:
bool canCastle = true;
bool inCheck = false;
};
class Rook : public Piece {
friend class Board;
public:
Rook(PieceColour colour) : Piece(colour) {
@ -81,6 +99,7 @@ public:
};
class Queen : public Piece {
friend class Board;
public:
Queen(PieceColour colour) : Piece(colour) {
@ -89,6 +108,7 @@ public:
};
class Knight : public Piece {
friend class Board;
public:
Knight(PieceColour colour) : Piece(colour) {
@ -97,6 +117,7 @@ public:
};
class Bishop : public Piece {
friend class Board;
public:
Bishop(PieceColour colour) : Piece(colour) {
@ -105,6 +126,7 @@ public:
};
class Pawn : public Piece {
friend class Board;
public:
Pawn(PieceColour colour) : Piece(colour) {