probleme avec board

This commit is contained in:
Gaspard VANCOMPERNOLLE 2025-05-07 15:22:34 +02:00
parent ad8ddd6418
commit f1827f4058
1 changed files with 18 additions and 39 deletions

View File

@ -52,22 +52,22 @@ public class Board {
setPiece(false, PieceType.Pawn, i, 1); // Noirs
}
// Pi<EFBFBD>ces noires
// Pièces noires
setPiece(false, PieceType.Rook, 0, 0);
setPiece(false, PieceType.Knight, 1, 0);
setPiece(false, PieceType.Bishop, 2, 0);
setPiece(false, PieceType.Queen, 4, 0);
setPiece(false, PieceType.King, 3, 0);
setPiece(false, PieceType.Queen, 3, 0);
setPiece(false, PieceType.King, 4, 0);
setPiece(false, PieceType.Bishop, 5, 0);
setPiece(false, PieceType.Knight, 6, 0);
setPiece(false, PieceType.Rook, 7, 0);
// Pi<EFBFBD>ces blanches
// Pièces blanches
setPiece(true, PieceType.Rook, 0, 7);
setPiece(true, PieceType.Knight, 1, 7);
setPiece(true, PieceType.Bishop, 2, 7);
setPiece(true, PieceType.Queen, 4, 7);
setPiece(true, PieceType.King, 3, 7);
setPiece(true, PieceType.Queen, 3, 7);
setPiece(true, PieceType.King, 4, 7);
setPiece(true, PieceType.Bishop, 5, 7);
setPiece(true, PieceType.Knight, 6, 7);
setPiece(true, PieceType.Rook, 7, 7);
@ -96,28 +96,28 @@ public class Board {
public void userTouch(int x, int y) {
Piece clickedPiece = getPieceAt(x, y);
// Aucune s<EFBFBD>lection active
// Aucune sélection active
if (selectedX == -1 && selectedY == -1) {
if (clickedPiece != null && clickedPiece.isWhite() == isTurnWhite()) {
// S<EFBFBD>lection de la pi<EFBFBD>ce
// Sélection de la pièce
selectedX = x;
selectedY = y;
// Calcul des d<EFBFBD>placements valides
// Calcul des déplacements valides
highlightedSquares = Move.getPossibleMoves(this, clickedPiece);
}
}
// Une pi<EFBFBD>ce est d<EFBFBD>j<EFBFBD> s<EFBFBD>lectionn<EFBFBD>e
// Une pièce est déjà sélectionnée
else {
// Si on clique <EFBFBD> nouveau sur la case s<EFBFBD>lectionn<EFBFBD>e on annule
// Si on clique à nouveau sur la case sélectionnée on annule
if (x == selectedX && y == selectedY) {
selectedX = -1;
selectedY = -1;
highlightedSquares.clear();
}
// Sinon on tente de bouger la pi<EFBFBD>ce s<EFBFBD>lectionn<EFBFBD>e vers (x, y)
// Sinon on tente de bouger la pièce sélectionnée vers (x, y)
else {
Piece selectedPiece = getPieceAt(selectedX, selectedY);
@ -138,7 +138,7 @@ public class Board {
Move move = new Move(selectedPiece, selectedX, selectedY, x, y, destPiece);
moveHistory.add(move);
// Appliquer le d<EFBFBD>placement
// Appliquer le déplacement
pieces.remove(selectedPiece);
if (destPiece != null) pieces.remove(destPiece);
pieces.add(new Piece(selectedPiece.getType(), selectedPiece.isWhite(), x, y));
@ -146,7 +146,7 @@ public class Board {
turnNumber++;
}
// Dans tous les cas, on d<EFBFBD>s<EFBFBD>lectionne
// Dans tous les cas, on désélectionne
selectedX = -1;
selectedY = -1;
highlightedSquares.clear();
@ -180,7 +180,7 @@ public class Board {
lines[y] = row.toString();
}
// Derni<EFBFBD>re ligne : couleur du joueur actif
// Dernière ligne : couleur du joueur actif
lines[height] = isTurnWhite() ? "W" : "B";
return lines;
@ -227,20 +227,20 @@ public class Board {
Move last = moveHistory.remove(moveHistory.size() - 1);
// Supprimer la pi<EFBFBD>ce d<EFBFBD>plac<EFBFBD>e
// Supprimer la pièce déplacée
Piece current = getPieceAt(last.getToX(), last.getToY());
if (current != null) {
pieces.remove(current);
}
// Restaurer la pi<EFBFBD>ce d<EFBFBD>plac<EFBFBD>e
// Restaurer la pièce déplacée
pieces.add(new Piece(
last.getMovedPiece().getType(),
last.getMovedPiece().isWhite(),
last.getFromX(), last.getFromY()
));
// R<EFBFBD>ins<EFBFBD>rer la pi<EFBFBD>ce captur<EFBFBD>e si besoin
// Réinsérer la pièce capturée si besoin
if (last.getCapturedPiece() != null) {
Piece c = last.getCapturedPiece();
pieces.add(new Piece(c.getType(), c.isWhite(), c.getX(), c.getY()));
@ -257,7 +257,6 @@ public class Board {
public void playMove(Move move) {
if (move == null) return;
<<<<<<< HEAD
Piece pieceToMove = getPieceAt(move.getFromX(), move.getFromY());
if (pieceToMove == null) return;
@ -289,29 +288,9 @@ public class Board {
selectedX = -1;
selectedY = -1;
highlightedSquares.clear();
=======
// Remove the moved piece from its old position
Piece from = move.getMovedPiece();
pieces.removeIf(p -> p.getX() == from.getX() && p.getY() == from.getY());
// Remove captured piece if any
if (move.getCapturedPiece() != null) {
Piece captured = move.getCapturedPiece();
pieces.removeIf(p -> p.getX() == captured.getX() && p.getY() == captured.getY());
}
// Add moved piece in new position
pieces.add(new Piece(from.getType(), from.isWhite(), move.getToX(), move.getToY()));
moveHistory.add(move);
turnNumber++;
>>>>>>> branch 'master' of https://gitarero.ecam.fr/g.vancompernolle/OOP_2B3_Project.git
}
<<<<<<< HEAD
=======
>>>>>>> branch 'master' of https://gitarero.ecam.fr/g.vancompernolle/OOP_2B3_Project.git
public Piece getPieceAt(int x, int y) {
for (Piece p : pieces) {
if (p.getX() == x && p.getY() == y) {