From 1aaf4cd6d555f2ad08c7699f47489b201a5c6e2b Mon Sep 17 00:00:00 2001 From: "charles.duteil" Date: Tue, 13 May 2025 15:27:12 +0200 Subject: [PATCH 1/3] playMoveSound added --- OOP_2B1_Project/src/backend/Board.java | 41 ++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/OOP_2B1_Project/src/backend/Board.java b/OOP_2B1_Project/src/backend/Board.java index 72f0298..d06f986 100644 --- a/OOP_2B1_Project/src/backend/Board.java +++ b/OOP_2B1_Project/src/backend/Board.java @@ -1,4 +1,8 @@ package backend; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; + import java.util.ArrayList; @@ -22,12 +26,17 @@ private Integer selectedY = null; private ArrayList highlightedPositions = new ArrayList<>(); +/* ====== AUDIO STATE ====== */ +private Clip moveClip; +private boolean soundEnabled = false; public Board(int colNum, int lineNum) { this.Width=colNum; this.Height=lineNum; this.pieces= new ArrayList <> (); + initMoveSound(); + @@ -199,6 +208,8 @@ private ArrayList highlightedPositions = new ArrayList<>(); throw new IllegalArgumentException("Unknown piece type"); } pieces.add(newPiece); + + playMoveSound(); turnNumber++; turnIsWhite = !turnIsWhite; @@ -329,4 +340,34 @@ public ArrayList getAllPieces() { public boolean isInBounds(int row, int col) { return row >= 0 && row < 8 && col >= 0 && col < 8; } +private void initMoveSound() { + try { + AudioInputStream ais = AudioSystem.getAudioInputStream( + Board.class.getResource("/sounds/move.wav")); + + if (ais == null) { // resource not found + System.err.println("move.wav not on class-path!"); + return; + } + + moveClip = AudioSystem.getClip(); + moveClip.open(ais); + + soundEnabled = true; // <<< MISSING LINE + System.out.println("Move-sound loaded OK"); + } catch (Exception e) { + e.printStackTrace(); + soundEnabled = false; + } +} + +private void playMoveSound() { + if (!soundEnabled || moveClip == null) return; + + if (moveClip.isRunning()) { + moveClip.stop(); + } + moveClip.setFramePosition(0); + moveClip.start(); +} } From 66710ec364bbdda1417c631cab1cd731df65562a Mon Sep 17 00:00:00 2001 From: "charles.duteil" Date: Tue, 13 May 2025 15:27:36 +0200 Subject: [PATCH 2/3] move sound (to be updated later) --- OOP_2B1_Project/src/sounds/move.wav | Bin 0 -> 1660 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 OOP_2B1_Project/src/sounds/move.wav diff --git a/OOP_2B1_Project/src/sounds/move.wav b/OOP_2B1_Project/src/sounds/move.wav new file mode 100644 index 0000000000000000000000000000000000000000..1e6615e7c80840172c55eadff50264d86edfc154 GIT binary patch literal 1660 zcmW+%J&znk5M3vT5Hd1|NXQXLBna6O5yF9y5C|VaHnzO?u{*mn-PK)HUEMu5ySFyy z^V!%K3>FDF{0x2o5jmv%faCS;YInP5s$Rc(^=kI|$JefPugqqjeR$*Qt$Fv>YqQzx z3f`~3GrRm;nY}vuX0O}(1TjgISTs>K=JuOJB}LXqE(W3yLu66q5QU;@^f5Cwmet}o zP#HriJ_Ms=+r%n8S2J@OoDJ%%Tlbchs|S(8{blfBH5vJ-_*>EM+*vn!`(ie`z~`fj z+22oQ?_T`7_s{$9-R=L-7xczo*RTF^^UwcgZ(fuS9v{W0CqLZz;`e)BTDk4$+oMN6 ze}4P%v%?$D&+XT(=H1Qhy_c&+clOirz(0J}A1`%L{oMzN4#M`dmUQ$eOm4Y+xgf%seA6l^3&g*9?-$&+2U}TbD8tW{Pv2p>v#T$whP;> z)w$Ew{B#Cm3~;Sss$qzu^yb&KcuvDw zWEI7UbW1kveF}lRL?4pZgjh2Yt9}YSY$2L6jXCI)V^%S-#6a^bHFA_-zxXO~4h$CC%q{5`C zFf~VX*vEjeNX%@`rIJF7G*KvJP#C`Spy_>$Dqb-wEJ0FI>eDD-q#>x#So*}09p@-u zEMSOHLpC!ok`S08xE-EI3rJ?mrC3ucf)OhE{1bir~&f~r@6 zFdCy+fRP2d0GL}7pkq4(FThx66{0{!5S}tAT^?fr&mOFBvq=CTL^UQ@w66f^7~%m6 zOM~wK-5}u|hz2jU9YEU?3u+<>X$-Q^wP4j$0IQTy3EqtqdI&>7h5!H%OipTEQiU!^ z;M&n-184O#jf1aspxiPw!(LK6oK?wl!8w;D00)2)S~FVbGC6Fqk2nNYM12sU83(&& z4Ty+b6o)k=X{Lfza19zlC)Cl{;SNGk4f@eaYo~#sp(NO|RRRaJFu)+76_1iz+nNkm zA$yFl$)tTak*>f*n1Kp)6Zat-tOSalN$}Xq5wn!gWQRWjgrOtZ5NM2XM;oYhg)8Tr YK^4P`Lz^X`q^5$yakfEZXdct-f7wGNzyJUM literal 0 HcmV?d00001 From 73f8ac5d353eff08ba1288c0074dafc4bf223624 Mon Sep 17 00:00:00 2001 From: marce Date: Tue, 13 May 2025 15:53:13 +0200 Subject: [PATCH 3/3] added undoLastMove --- OOP_2B1_Project/src/backend/Board.java | 28 +++++++++++++++++++++----- OOP_2B1_Project/testboard | 10 ++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/OOP_2B1_Project/src/backend/Board.java b/OOP_2B1_Project/src/backend/Board.java index 010791f..2bf1823 100644 --- a/OOP_2B1_Project/src/backend/Board.java +++ b/OOP_2B1_Project/src/backend/Board.java @@ -1,6 +1,7 @@ package backend; import java.util.ArrayList; +import java.util.LinkedList; public class Board { @@ -22,6 +23,10 @@ private Integer selectedY = null; private ArrayList highlightedPositions = new ArrayList<>(); +private LinkedList> boardHistory = new LinkedList<>(); + + + public Board(int colNum, int lineNum) { @@ -162,12 +167,11 @@ private ArrayList highlightedPositions = new ArrayList<>(); if (pieceAtDestination == null || pieceAtDestination.isWhite() != pieceToMove.isWhite()) { - + saveStateToHistory(); if (pieceAtDestination != null) { pieces.remove(pieceAtDestination); } - pieces.remove(pieceToMove); pieces.add(new Piece(pieceToMove.isWhite(), pieceToMove.getType(), x, y)); @@ -187,7 +191,20 @@ private ArrayList highlightedPositions = new ArrayList<>(); } - + private void saveStateToHistory() { + ArrayList clonedList = new ArrayList<>(); + for(int i =0; i highlightedPositions = new ArrayList<>(); } public void undoLastMove() { - //TODO - + + pieces = boardHistory.getLast(); + boardHistory.removeLast(); } public Board(Board board) { diff --git a/OOP_2B1_Project/testboard b/OOP_2B1_Project/testboard index 940541a..70cb60e 100644 --- a/OOP_2B1_Project/testboard +++ b/OOP_2B1_Project/testboard @@ -1,9 +1,9 @@ -WR,WN,WB,WQ,WK,WB,WN,WR +,WN,WB,WQ,WK,WB,,WR WP,WP,WP,WP,WP,WP,WP,WP ,,,,,,, -,,BK,,,,, ,,,,,,, -,,,,,,, -BP,BP,BP,BP,,BP,BP,BP -BR,BN,BB,,BQ,BB,BN,BR +,,WR,BP,,WN,, +,,BN,,,,, +BP,BP,BP,,BP,BP,BP,BP +BR,,BB,BK,BQ,BB,BN,BR W