From 595ca18c90217462c36a4404ee632a853ff94af0 Mon Sep 17 00:00:00 2001 From: HP Date: Sat, 17 May 2025 20:36:34 +0200 Subject: [PATCH] nope sorry wrong change --- src/backend/Board.java | 59 ++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/src/backend/Board.java b/src/backend/Board.java index 57eab2c..231dc65 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -1,6 +1,8 @@ package backend; import java.util.ArrayList; +import java.util.Stack; + public class Board { @@ -204,7 +206,7 @@ public class Board { selectedX = null; selectedY = null; highlightedSquares.clear(); - + // Check for en passant capture BEFORE updating enPassantTarget! if (selectedPiece.getType() == PieceType.Pawn && enPassantTarget != null && @@ -460,14 +462,6 @@ public ArrayList computeLegalMoves(Piece piece) { if (y == startRow && isEmpty(x, twoStepsY)) { moves.add(new int[]{x, twoStepsY}); } - if (nextY == 7 ){ - setPiece(false , PieceType.Queen, x,nextY); - pieces.remove(piece); - } - if (nextY==0 ){ - setPiece(true , PieceType.Queen, x,nextY); - pieces.remove(piece); - } } // Diagonal capture @@ -477,24 +471,26 @@ public ArrayList computeLegalMoves(Piece piece) { if (isEnemy(x + 1, nextY, piece.isWhite())) { moves.add(new int[]{x + 1, nextY}); } - + if (y==7){ + setPiece(false , PieceType.Queen, x,y); + pieces.remove(piece); + + } + if (y==0 ){ + setPiece(true , PieceType.Queen, x,y); + pieces.remove(piece); + } // En passant if (enPassantTarget != null) { int targetX = enPassantTarget[0]; int targetY = enPassantTarget[1]; - if (nextY == targetY && Math.abs(x - targetX) == 1) { - moves.add(new int[]{targetX, targetY}); + + if(!piece.isWhite() && y==4 && targetY==5 && Math.abs(x-targetX)==1) { + moves.add(new int[] {targetX, targetY}); + } } - } - - // Promotion check (you shouldn't promote here — only on move execution) - // Do NOT change piece type inside this method } - - - - if (type == PieceType.Rook) { // Directions : haut, bas, gauche, droite int[][] directions = {{1,0},{-1,0},{0,1},{0,-1}}; @@ -589,9 +585,26 @@ public ArrayList computeLegalMoves(Piece piece) { return moves; - - +} +public int[] findKingPosition(boolean isWhite) { + for (Piece piece : pieces) { + if (piece.getType() == PieceType.King && piece.isWhite() == isWhite) { + return new int[]{piece.getX(), piece.getY()}; + } + } + return null; // Erreur : le roi n'a pas été trouvé (ne devrait pas arriver) } +public ArrayList getAllMoves(boolean isWhite) { + ArrayList allMoves = new ArrayList<>(); + for (Piece piece : pieces) { + if (piece.isWhite() == isWhite) { + ArrayList moves = computeLegalMoves(piece); + for (int[] move : moves) { + allMoves.add(new int[]{piece.getX(), piece.getY(), move[0], move[1]}); + } + } + } + return allMoves; } - +} \ No newline at end of file