diff --git a/src/backend/Board.java b/src/backend/Board.java index cabeac8..0659b05 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -517,6 +517,14 @@ public void undoLastMove() { // Update the moved piece's position piece.setPosition(move.getToX(), move.getToY()); + + if (piece.getType() == PieceType.Pawn) { + // white promotes on y == height‐1, black on y == 0 + int promotionRank = piece.isWhite() ? height - 1 : 0; + if (piece.getY() == promotionRank) { + piece.setType(PieceType.Queen); + } + } // Save move in history for undo moveHistory.add(move); diff --git a/src/backend/Piece.java b/src/backend/Piece.java index 1490f6b..8090bc3 100644 --- a/src/backend/Piece.java +++ b/src/backend/Piece.java @@ -24,6 +24,9 @@ public class Piece { public void setY(int y) { this.y = y; } + public void setType(PieceType newType) { + this.type = newType; + } public PieceType getType() { return type; @@ -55,7 +58,6 @@ public class Piece { public void setHasMoved(boolean moved) { this.hasMoved = moved; } - - + }