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 setPiece(false, PieceType.Pawn, i, 1); // Noirs
} }
// Pi<EFBFBD>ces noires // Pièces noires
setPiece(false, PieceType.Rook, 0, 0); setPiece(false, PieceType.Rook, 0, 0);
setPiece(false, PieceType.Knight, 1, 0); setPiece(false, PieceType.Knight, 1, 0);
setPiece(false, PieceType.Bishop, 2, 0); setPiece(false, PieceType.Bishop, 2, 0);
setPiece(false, PieceType.Queen, 4, 0); setPiece(false, PieceType.Queen, 3, 0);
setPiece(false, PieceType.King, 3, 0); setPiece(false, PieceType.King, 4, 0);
setPiece(false, PieceType.Bishop, 5, 0); setPiece(false, PieceType.Bishop, 5, 0);
setPiece(false, PieceType.Knight, 6, 0); setPiece(false, PieceType.Knight, 6, 0);
setPiece(false, PieceType.Rook, 7, 0); setPiece(false, PieceType.Rook, 7, 0);
// Pi<EFBFBD>ces blanches // Pièces blanches
setPiece(true, PieceType.Rook, 0, 7); setPiece(true, PieceType.Rook, 0, 7);
setPiece(true, PieceType.Knight, 1, 7); setPiece(true, PieceType.Knight, 1, 7);
setPiece(true, PieceType.Bishop, 2, 7); setPiece(true, PieceType.Bishop, 2, 7);
setPiece(true, PieceType.Queen, 4, 7); setPiece(true, PieceType.Queen, 3, 7);
setPiece(true, PieceType.King, 3, 7); setPiece(true, PieceType.King, 4, 7);
setPiece(true, PieceType.Bishop, 5, 7); setPiece(true, PieceType.Bishop, 5, 7);
setPiece(true, PieceType.Knight, 6, 7); setPiece(true, PieceType.Knight, 6, 7);
setPiece(true, PieceType.Rook, 7, 7); setPiece(true, PieceType.Rook, 7, 7);
@ -96,28 +96,28 @@ public class Board {
public void userTouch(int x, int y) { public void userTouch(int x, int y) {
Piece clickedPiece = getPieceAt(x, y); Piece clickedPiece = getPieceAt(x, y);
// Aucune s<EFBFBD>lection active // Aucune sélection active
if (selectedX == -1 && selectedY == -1) { if (selectedX == -1 && selectedY == -1) {
if (clickedPiece != null && clickedPiece.isWhite() == isTurnWhite()) { if (clickedPiece != null && clickedPiece.isWhite() == isTurnWhite()) {
// S<EFBFBD>lection de la pi<EFBFBD>ce // Sélection de la pièce
selectedX = x; selectedX = x;
selectedY = y; selectedY = y;
// Calcul des d<EFBFBD>placements valides // Calcul des déplacements valides
highlightedSquares = Move.getPossibleMoves(this, clickedPiece); 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 { 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) { if (x == selectedX && y == selectedY) {
selectedX = -1; selectedX = -1;
selectedY = -1; selectedY = -1;
highlightedSquares.clear(); 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 { else {
Piece selectedPiece = getPieceAt(selectedX, selectedY); Piece selectedPiece = getPieceAt(selectedX, selectedY);
@ -138,7 +138,7 @@ public class Board {
Move move = new Move(selectedPiece, selectedX, selectedY, x, y, destPiece); Move move = new Move(selectedPiece, selectedX, selectedY, x, y, destPiece);
moveHistory.add(move); moveHistory.add(move);
// Appliquer le d<EFBFBD>placement // Appliquer le déplacement
pieces.remove(selectedPiece); pieces.remove(selectedPiece);
if (destPiece != null) pieces.remove(destPiece); if (destPiece != null) pieces.remove(destPiece);
pieces.add(new Piece(selectedPiece.getType(), selectedPiece.isWhite(), x, y)); pieces.add(new Piece(selectedPiece.getType(), selectedPiece.isWhite(), x, y));
@ -146,7 +146,7 @@ public class Board {
turnNumber++; turnNumber++;
} }
// Dans tous les cas, on d<EFBFBD>s<EFBFBD>lectionne // Dans tous les cas, on désélectionne
selectedX = -1; selectedX = -1;
selectedY = -1; selectedY = -1;
highlightedSquares.clear(); highlightedSquares.clear();
@ -180,7 +180,7 @@ public class Board {
lines[y] = row.toString(); lines[y] = row.toString();
} }
// Derni<EFBFBD>re ligne : couleur du joueur actif // Dernière ligne : couleur du joueur actif
lines[height] = isTurnWhite() ? "W" : "B"; lines[height] = isTurnWhite() ? "W" : "B";
return lines; return lines;
@ -227,20 +227,20 @@ public class Board {
Move last = moveHistory.remove(moveHistory.size() - 1); 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()); Piece current = getPieceAt(last.getToX(), last.getToY());
if (current != null) { if (current != null) {
pieces.remove(current); pieces.remove(current);
} }
// Restaurer la pi<EFBFBD>ce d<EFBFBD>plac<EFBFBD>e // Restaurer la pièce déplacée
pieces.add(new Piece( pieces.add(new Piece(
last.getMovedPiece().getType(), last.getMovedPiece().getType(),
last.getMovedPiece().isWhite(), last.getMovedPiece().isWhite(),
last.getFromX(), last.getFromY() 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) { if (last.getCapturedPiece() != null) {
Piece c = last.getCapturedPiece(); Piece c = last.getCapturedPiece();
pieces.add(new Piece(c.getType(), c.isWhite(), c.getX(), c.getY())); pieces.add(new Piece(c.getType(), c.isWhite(), c.getX(), c.getY()));
@ -257,7 +257,6 @@ public class Board {
public void playMove(Move move) { public void playMove(Move move) {
if (move == null) return; if (move == null) return;
<<<<<<< HEAD
Piece pieceToMove = getPieceAt(move.getFromX(), move.getFromY()); Piece pieceToMove = getPieceAt(move.getFromX(), move.getFromY());
if (pieceToMove == null) return; if (pieceToMove == null) return;
@ -289,29 +288,9 @@ public class Board {
selectedX = -1; selectedX = -1;
selectedY = -1; selectedY = -1;
highlightedSquares.clear(); 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) { public Piece getPieceAt(int x, int y) {
for (Piece p : pieces) { for (Piece p : pieces) {
if (p.getX() == x && p.getY() == y) { if (p.getX() == x && p.getY() == y) {