nope sorry wrong change

This commit is contained in:
HP 2025-05-17 20:36:34 +02:00
parent 3509653392
commit 595ca18c90
1 changed files with 36 additions and 23 deletions

View File

@ -1,6 +1,8 @@
package backend; package backend;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Stack;
public class Board { public class Board {
@ -460,14 +462,6 @@ public ArrayList<int[]> computeLegalMoves(Piece piece) {
if (y == startRow && isEmpty(x, twoStepsY)) { if (y == startRow && isEmpty(x, twoStepsY)) {
moves.add(new int[]{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 // Diagonal capture
@ -477,24 +471,26 @@ public ArrayList<int[]> computeLegalMoves(Piece piece) {
if (isEnemy(x + 1, nextY, piece.isWhite())) { if (isEnemy(x + 1, nextY, piece.isWhite())) {
moves.add(new int[]{x + 1, nextY}); 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 // En passant
if (enPassantTarget != null) { if (enPassantTarget != null) {
int targetX = enPassantTarget[0]; int targetX = enPassantTarget[0];
int targetY = enPassantTarget[1]; 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) { if (type == PieceType.Rook) {
// Directions : haut, bas, gauche, droite // Directions : haut, bas, gauche, droite
int[][] directions = {{1,0},{-1,0},{0,1},{0,-1}}; int[][] directions = {{1,0},{-1,0},{0,1},{0,-1}};
@ -589,9 +585,26 @@ public ArrayList<int[]> computeLegalMoves(Piece piece) {
return moves; 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<int[]> getAllMoves(boolean isWhite) {
ArrayList<int[]> allMoves = new ArrayList<>();
for (Piece piece : pieces) {
if (piece.isWhite() == isWhite) {
ArrayList<int[]> moves = computeLegalMoves(piece);
for (int[] move : moves) {
allMoves.add(new int[]{piece.getX(), piece.getY(), move[0], move[1]});
}
}
}
return allMoves;
}
} }