From 1aaf4cd6d555f2ad08c7699f47489b201a5c6e2b Mon Sep 17 00:00:00 2001 From: "charles.duteil" Date: Tue, 13 May 2025 15:27:12 +0200 Subject: [PATCH] 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(); +} }