From 972e29f6e349786c3b89cf556faf50f5b92c18e1 Mon Sep 17 00:00:00 2001 From: marce Date: Mon, 19 May 2025 19:46:36 +0200 Subject: [PATCH] Pawn promoted to a queen when reaches to top/bottom --- OOP_2B1_Project/highlightKingWhenCheck | 9 +++++++++ OOP_2B1_Project/src/backend/Board.java | 17 +++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 OOP_2B1_Project/highlightKingWhenCheck diff --git a/OOP_2B1_Project/highlightKingWhenCheck b/OOP_2B1_Project/highlightKingWhenCheck new file mode 100644 index 0000000..647a4d0 --- /dev/null +++ b/OOP_2B1_Project/highlightKingWhenCheck @@ -0,0 +1,9 @@ +WR,WN,WB,WQ,WK,WB,WN,WR +WP,WP,WP,,WP,WP,WP, +,,,,,,,WP +,,,WP,,,, +,,,,BP,,, +,,,,,,, +BP,BP,BP,BP,,BP,BP,BP +BR,BN,BB,BK,BQ,BB,BN,BR +B diff --git a/OOP_2B1_Project/src/backend/Board.java b/OOP_2B1_Project/src/backend/Board.java index dc499c1..8c3a8ad 100644 --- a/OOP_2B1_Project/src/backend/Board.java +++ b/OOP_2B1_Project/src/backend/Board.java @@ -349,6 +349,23 @@ public class Board implements Cloneable { pieces.remove(pieceToMove); + // Check if the moved piece is a pawn reaching the opposite end of the board + if (pieceToMove.getType() == PieceType.Pawn) { + if ((pieceToMove.isWhite() && move.getToRow() == 7) || (!pieceToMove.isWhite() && move.getToRow() == 0)) { + // Promote the pawn to a queen + Piece promotedPiece = makeNewPiece(PieceType.Queen, pieceToMove.isWhite(), move.getToCol(), move.getToRow()); + pieces.add(promotedPiece); + + // Update turn info + turnIsWhite = !turnIsWhite; + turnNumber++; + + // Play move sound if enabled + playMoveSound(); + return; + } + } + // Add moved piece at the new position Piece movedPiece = makeNewPiece(pieceToMove.getType(), pieceToMove.isWhite(), move.getToCol(), move.getToRow()); pieces.add(movedPiece);