Ca fait le Undo
This commit is contained in:
parent
a9a8d42651
commit
7a49ade79c
|
|
@ -11,6 +11,8 @@ public class Board {
|
|||
private int selectedY = -1;
|
||||
private ArrayList<Piece> pieces = new ArrayList<>();
|
||||
private ArrayList<int[]> highlightedSquares = new ArrayList<>();
|
||||
private ArrayList<Move> moveHistory = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -130,17 +132,17 @@ public class Board {
|
|||
}
|
||||
|
||||
if (valid) {
|
||||
// Capture éventuelle
|
||||
Piece destPiece = getPieceAt(x, y);
|
||||
if (destPiece != null) {
|
||||
pieces.remove(destPiece);
|
||||
}
|
||||
|
||||
// Déplacement (création d'une nouvelle pièce)
|
||||
// Enregistrer le coup dans l'historique
|
||||
Move move = new Move(selectedPiece, selectedX, selectedY, x, y, destPiece);
|
||||
moveHistory.add(move);
|
||||
|
||||
// Appliquer le déplacement
|
||||
pieces.remove(selectedPiece);
|
||||
if (destPiece != null) pieces.remove(destPiece);
|
||||
pieces.add(new Piece(selectedPiece.getType(), selectedPiece.isWhite(), x, y));
|
||||
|
||||
// Fin du tour
|
||||
turnNumber++;
|
||||
}
|
||||
|
||||
|
|
@ -221,8 +223,30 @@ public class Board {
|
|||
|
||||
|
||||
public void undoLastMove() {
|
||||
//TODO
|
||||
|
||||
if (moveHistory.isEmpty()) return;
|
||||
|
||||
Move last = moveHistory.remove(moveHistory.size() - 1);
|
||||
|
||||
// Supprimer la pièce déplacée
|
||||
Piece current = getPieceAt(last.getToX(), last.getToY());
|
||||
if (current != null) {
|
||||
pieces.remove(current);
|
||||
}
|
||||
|
||||
// Restaurer la pièce déplacée
|
||||
pieces.add(new Piece(
|
||||
last.getMovedPiece().getType(),
|
||||
last.getMovedPiece().isWhite(),
|
||||
last.getFromX(), last.getFromY()
|
||||
));
|
||||
|
||||
// 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()));
|
||||
}
|
||||
|
||||
turnNumber--;
|
||||
}
|
||||
|
||||
public Board(Board board) {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,27 @@ package backend;
|
|||
import java.util.ArrayList;
|
||||
|
||||
public class Move {
|
||||
private Piece movedPiece;
|
||||
private int fromX, fromY;
|
||||
private int toX, toY;
|
||||
private Piece capturedPiece;
|
||||
|
||||
public Move(Piece movedPiece, int fromX, int fromY, int toX, int toY, Piece capturedPiece) {
|
||||
this.movedPiece = movedPiece;
|
||||
this.fromX = fromX;
|
||||
this.fromY = fromY;
|
||||
this.toX = toX;
|
||||
this.toY = toY;
|
||||
this.capturedPiece = capturedPiece;
|
||||
}
|
||||
|
||||
public Piece getMovedPiece() { return movedPiece; }
|
||||
public int getFromX() { return fromX; }
|
||||
public int getFromY() { return fromY; }
|
||||
public int getToX() { return toX; }
|
||||
public int getToY() { return toY; }
|
||||
public Piece getCapturedPiece() { return capturedPiece; }
|
||||
|
||||
|
||||
public static ArrayList<int[]> getPossibleMoves(Board board, Piece piece) {
|
||||
ArrayList<int[]> moves = new ArrayList<>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue