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 int selectedY = -1;
|
||||||
private ArrayList<Piece> pieces = new ArrayList<>();
|
private ArrayList<Piece> pieces = new ArrayList<>();
|
||||||
private ArrayList<int[]> highlightedSquares = new ArrayList<>();
|
private ArrayList<int[]> highlightedSquares = new ArrayList<>();
|
||||||
|
private ArrayList<Move> moveHistory = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -130,17 +132,17 @@ public class Board {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
// Capture éventuelle
|
|
||||||
Piece destPiece = getPieceAt(x, y);
|
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);
|
pieces.remove(selectedPiece);
|
||||||
|
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));
|
||||||
|
|
||||||
// Fin du tour
|
|
||||||
turnNumber++;
|
turnNumber++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -221,8 +223,30 @@ public class Board {
|
||||||
|
|
||||||
|
|
||||||
public void undoLastMove() {
|
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) {
|
public Board(Board board) {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,27 @@ package backend;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class Move {
|
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) {
|
public static ArrayList<int[]> getPossibleMoves(Board board, Piece piece) {
|
||||||
ArrayList<int[]> moves = new ArrayList<>();
|
ArrayList<int[]> moves = new ArrayList<>();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue