diff --git a/src/backend/Board.java b/src/backend/Board.java index 271a309..a5f2898 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -756,5 +756,31 @@ public class Board { // Replace highlights with filtered version highlightedSquares = newHighlights; } + + public boolean isCheckmate(boolean isWhite) { + if (!isKingInCheck(isWhite)) { + return false; // Not in check, so not checkmate + } + + // Check if ANY legal move can get the king out of check + for (Piece piece : getPieces()) { + if (piece.isWhite() == isWhite) { + ArrayList legalMoves = getLegalMoves(piece); + + for (Move move : legalMoves) { + // Simulate move + Board simulatedBoard = new Board(this.toFileRep()); + simulatedBoard.playMove(move); + + // If king is not in check after this move, it's not checkmate + if (!simulatedBoard.isKingInCheck(isWhite)) { + return false; + } + } + } + } + + return true; // No legal move prevents check => checkmate + } }