diff --git a/OOP_2B1_Project/src/backend/KingCheck.java b/OOP_2B1_Project/src/backend/KingCheck.java deleted file mode 100644 index 85dcc26..0000000 --- a/OOP_2B1_Project/src/backend/KingCheck.java +++ /dev/null @@ -1,97 +0,0 @@ -package backend; - -import java.util.ArrayList; - -public class KingCheck { - public ArrayList> getLegalMoves(Piece piece, ArrayList> board) { - ArrayList> rawMoves = piece.getPossibleMoves(board); - - ArrayList> legalMoves = new ArrayList<>(); - for (int y = 0; y < 8; y++) { - ArrayList row = new ArrayList<>(); - for (int x = 0; x < 8; x++) { - row.add(false); - } - legalMoves.add(row); - } - - for (int y = 0; y < 8; y++) { - for (int x = 0; x < 8; x++) { - if (rawMoves.get(y).get(x)) { - Move move = new Move(piece.getX(), piece.getY(), x, y); - if (isMoveSafe(board, move, piece.isWhite())) { - legalMoves.get(y).set(x, true); - } - } - } - } - - return legalMoves; - } - - private boolean isKingInCheck(ArrayList> board, boolean isWhiteTurn) { - int kingX = -1, kingY = -1; - - // Find the king - for (ArrayList row : board) { - for (Piece p : row) { - if (p != null && p.isWhite() == isWhiteTurn && p.getType() == PieceType.King) { - kingX = p.getX(); - kingY = p.getY(); - break; - } - } - } - - if (kingX == -1 || kingY == -1) { - return true; // King not found, technically in check - } - - // Check if any enemy piece can capture the king - for (ArrayList row : board) { - for (Piece p : row) { - if (p != null && p.isWhite() != isWhiteTurn) { - ArrayList> moves = p.getPossibleMoves(board); - if (moves.get(kingY).get(kingX)) { - return true; // King can be captured - } - } - } - } - - return false; // King is safe - } - - private boolean isMoveSafe(ArrayList> board, Move move, boolean isWhiteTurn) { - ArrayList> simulatedBoard = simulateMove(board, move); - return !isKingInCheck(simulatedBoard, isWhiteTurn); - } - - private ArrayList> simulateMove(ArrayList> board, Move move) { - ArrayList> newBoard = deepCopyBoard(board); - - Piece piece = newBoard.get(move.fromY).get(move.fromX); - newBoard.get(move.fromY).set(move.fromX, null); - piece.x = move.toX; - piece.y = move.toY; - newBoard.get(move.toY).set(move.toX, piece); - - return newBoard; - } - - private ArrayList> deepCopyBoard(ArrayList> original) { - ArrayList> copy = new ArrayList<>(); - for (ArrayList row : original) { - ArrayList newRow = new ArrayList<>(); - for (Piece p : row) { - if (p != null) { - newRow.add(PieceCreation.createPiece(p.getX(), p.getY(), p.getType(), p.isWhite())); - } else { - newRow.add(null); - } - } - copy.add(newRow); - } - return copy; - } -}