feat: en passant generally implemented

This commit is contained in:
A.M. Rowsell 2026-09-22 01:58:46 -04:00
commit 10a4dcb60b
Signed by: amr
GPG key ID: E0879EDBDB0CA7B1
4 changed files with 53 additions and 12 deletions

View file

@ -392,6 +392,10 @@ std::vector<Move> Pawn::getLegalMoves(const Square &from, Board &board) const {
if(target && target->getColour() != this->getColour()) {
// legal capture
moveList.push_back({from, targetSquare});
} else if(targetSquare.rank == board.getEnPassantTargetSquare().rank &&
targetSquare.file == board.getEnPassantTargetSquare().file) {
// en passant capture
moveList.push_back({from, targetSquare});
} else
continue;
} else { // normal one square forward
@ -419,6 +423,10 @@ std::vector<Move> Pawn::getLegalMoves(const Square &from, Board &board) const {
if(target && target->getColour() != this->getColour()) { // can only move there if it's a capture
// legal capture
moveList.push_back({from, targetSquare});
} else if(targetSquare.rank == board.getEnPassantTargetSquare().rank &&
targetSquare.file == board.getEnPassantTargetSquare().file) {
// en passant capture
moveList.push_back({from, targetSquare});
} else
continue;
} else { // normal one square forward