diff --git a/src/backend/Board.java b/src/backend/Board.java index e9ac46f..a0b2e98 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -265,12 +265,29 @@ public class Board { public void getLastMove (int x, int y) {// it saves the current state before making a move previousStates.add(new Board(this)); // Use the existing constructor to create a copy + getLastMove(selectedX, selectedY); } public void undoLastMove() { + if (!previousStates.isEmpty()) { + Board previousState = previousStates.remove(previousStates.size() - 1); // Get the last state + this.colNum = previousState.colNum; + this.lineNum = previousState.lineNum; + this.turnNumber = previousState.turnNumber; + this.isWhiteTurn = previousState.isWhiteTurn; + this.pieces = new ArrayList<>(previousState.pieces); // Restore pieces + // Reset selected positions and highlighted squares + this.selectedX = previousState.selectedX; + this.selectedY = previousState.selectedY; + this.highlightedSquares = new ArrayList<>(previousState.highlightedSquares); + } else { + System.out.println("There are no moves to undo."); + } + } - } + + public Board(Board board) { this.colNum = board.colNum; diff --git a/src/backend/Game.java b/src/backend/Game.java index 7ab9929..e2ad358 100644 --- a/src/backend/Game.java +++ b/src/backend/Game.java @@ -107,6 +107,7 @@ public class Game extends Thread { board.undoLastMove(); } + public void toggleAI(boolean isWhite) { this.activationAIFlags[isWhite?1:0] = !this.activationAIFlags[isWhite?1:0]; }