From b54d05aeda1c8d26665b1ac4d54a567cdeb01269 Mon Sep 17 00:00:00 2001 From: Romain Murphy Date: Wed, 7 May 2025 15:05:25 +0200 Subject: [PATCH] en passant undo --- OOP_2B1_Project/src/backend/Board.java | 9 +++++---- OOP_2B1_Project/src/backend/BoardHistory.java | 7 ++++++- .../src/windowInterface/JPanelChessBoard.java | 1 + OOP_2B1_Project/src/windowInterface/MyInterface.java | 8 ++++---- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/OOP_2B1_Project/src/backend/Board.java b/OOP_2B1_Project/src/backend/Board.java index 56bedf5..2d973ce 100644 --- a/OOP_2B1_Project/src/backend/Board.java +++ b/OOP_2B1_Project/src/backend/Board.java @@ -36,7 +36,7 @@ public class Board { } this.turnNumber = 0; this.turnColor = true; - boardHistory.add(new BoardHistory(board,turnNumber,turnColor)); + boardHistory.add(new BoardHistory(board,turnNumber,turnColor,lastMove)); } public int getWidth() { @@ -127,7 +127,7 @@ public class Board { public void movePiece(int x, int y) { if (select) { - boardHistory.add(new BoardHistory(board,turnNumber,turnColor)); + boardHistory.add(new BoardHistory(board,turnNumber,turnColor,lastMove)); Piece pieceToMove = this.board.get(this.ym).get(this.xm); boolean isCastlingMove = pieceToMove.getType() == PieceType.King && Math.abs(x - xm) == 2; @@ -263,7 +263,7 @@ public class Board { board = fileToBoard.getBoard(); turnNumber = fileToBoard.getTurnNumber(); turnColor = fileToBoard.isTurnColor(); - boardHistory.add(new BoardHistory(board,turnNumber,turnColor)); + boardHistory.add(new BoardHistory(board,turnNumber,turnColor,lastMove)); } // public Board toBoard(String[] array) { // FileBoard fileToBoard = new FileBoard(array); @@ -294,6 +294,7 @@ public class Board { board = boardHistory.get(boardHistory.size() - 1).getBoard(); this.turnNumber = boardHistory.getLast().getTurnNumber(); this.turnColor = boardHistory.getLast().isTurnColor(); + this.lastMove = boardHistory.getLast().getLastMove(); boardHistory.removeLast(); // System.out.println(boardHistory); // Debug } @@ -309,7 +310,7 @@ public class Board { int ym = move.getFromY(); int x = move.getToX(); int y = move.getToY(); - boardHistory.add(new BoardHistory(board,turnNumber,turnColor)); + boardHistory.add(new BoardHistory(board,turnNumber,turnColor,lastMove)); Piece pieceToMove = this.board.get(ym).get(xm); boolean isCastlingMove = pieceToMove.getType() == PieceType.King && Math.abs(x - xm) == 2; lastMove = new Move(xm, ym, x, y); diff --git a/OOP_2B1_Project/src/backend/BoardHistory.java b/OOP_2B1_Project/src/backend/BoardHistory.java index 9577fda..ca380fd 100644 --- a/OOP_2B1_Project/src/backend/BoardHistory.java +++ b/OOP_2B1_Project/src/backend/BoardHistory.java @@ -8,10 +8,12 @@ public class BoardHistory { public ArrayList> board = new ArrayList<>(); public int turnNumber; public boolean turnColor; - public BoardHistory(ArrayList> board, int turnNumber, boolean turnColor) { + public Move lastMove; + public BoardHistory(ArrayList> board, int turnNumber, boolean turnColor, Move lastMove) { this.board = deepCopyBoard(board); this.turnNumber = turnNumber; this.turnColor = turnColor; + this.lastMove = lastMove; } private ArrayList> deepCopyBoard(ArrayList> original) { ArrayList> copy = new ArrayList<>(); @@ -41,5 +43,8 @@ public class BoardHistory { public String toString() { return "BoardHistory [board=" + board + "]"; } + public Move getLastMove() { + return lastMove; + } } diff --git a/OOP_2B1_Project/src/windowInterface/JPanelChessBoard.java b/OOP_2B1_Project/src/windowInterface/JPanelChessBoard.java index f3988ee..2f99f63 100644 --- a/OOP_2B1_Project/src/windowInterface/JPanelChessBoard.java +++ b/OOP_2B1_Project/src/windowInterface/JPanelChessBoard.java @@ -39,6 +39,7 @@ public class JPanelChessBoard extends JPanel { selectedPieceType = PieceType.Pawn; pieceSelectorMode = false; try { + spriteSheet = ImageIO.read(new File("newPieces.png")); } catch (IOException e) { e.printStackTrace(); diff --git a/OOP_2B1_Project/src/windowInterface/MyInterface.java b/OOP_2B1_Project/src/windowInterface/MyInterface.java index 054cd68..18b2bde 100644 --- a/OOP_2B1_Project/src/windowInterface/MyInterface.java +++ b/OOP_2B1_Project/src/windowInterface/MyInterface.java @@ -295,10 +295,10 @@ public class MyInterface extends JFrame { ); switch (choice) { - case 0: return 1; // Easy - case 1: return 2; // Medium - case 2: return 3; // Hard - default: return 2; // fallback to Medium + case 0: return 2; // Easy + case 1: return 3; // Medium + case 2: return 4; // Hard + default: return 3; // fallback to Medium } } }