From 3326b3795f3dfcbee6915111147672c58484c79d Mon Sep 17 00:00:00 2001 From: b23022363 <maria.bou&l"m@etu.univ-amu.fr> Date: Sat, 11 Nov 2023 13:46:11 +0100 Subject: [PATCH] Sonor Motor --- .../java/engine/Sonor/PongSoundEngine.java | 54 +++++++++++++++++++ src/main/java/pong/PongApp.java | 12 +++++ 2 files changed, 66 insertions(+) create mode 100644 src/main/java/engine/Sonor/PongSoundEngine.java diff --git a/src/main/java/engine/Sonor/PongSoundEngine.java b/src/main/java/engine/Sonor/PongSoundEngine.java new file mode 100644 index 0000000..bb8882b --- /dev/null +++ b/src/main/java/engine/Sonor/PongSoundEngine.java @@ -0,0 +1,54 @@ +package engine.Sonor; + + +import javax.sound.sampled.*; +import java.io.File; +import java.io.IOException; + +public class PongSoundEngine { + + private Clip paddleHitClip; + private Clip wallHitClip; + private Clip pointScoredClip; + + public PongSoundEngine() { + try { + // Charger les fichiers audio + paddleHitClip = AudioSystem.getClip(); + AudioInputStream paddleHitStream = AudioSystem.getAudioInputStream(new File("C:\\Users\\pc\\Downloads\\paddle-fan-drum-40347.wav")); + paddleHitClip.open(paddleHitStream); + + wallHitClip = AudioSystem.getClip(); + AudioInputStream wallHitStream = AudioSystem.getAudioInputStream(new File("C:\\Users\\pc\\Downloads\\hitting-the-wall-with-a-stick-100777.wav")); + wallHitClip.open(wallHitStream); + + pointScoredClip = AudioSystem.getClip(); + AudioInputStream pointScoredStream = AudioSystem.getAudioInputStream(new File("C:\\Users\\pc\\Downloads\\epic-hybrid-logo-157092.wav")); + pointScoredClip.open(pointScoredStream); + + } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) { + e.printStackTrace(); + } + } + + public void playPaddleHitSound() { + playSound(paddleHitClip); + } + + public void playWallHitSound() { + playSound(wallHitClip); + } + + public void playPointScoredSound() { + playSound(pointScoredClip); + } + + private void playSound(Clip clip) { + if (clip.isRunning()) { + clip.stop(); + } + clip.setFramePosition(0); + clip.start(); + } + +} \ No newline at end of file diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index 3a4d160..b885c77 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -2,6 +2,7 @@ package pong; import engine.physic.Coordinates2D; import engine.Kernel; +import engine.Sonor.PongSoundEngine; import java.io.IOException; import java.util.ArrayList; @@ -11,8 +12,11 @@ public class PongApp { public static ArrayList<PongObject> components = new ArrayList<PongObject>(); public static int width = 850; public static int height = 500; + public static PongSoundEngine soundEngine; + public PongApp() throws IOException { + soundEngine = new PongSoundEngine(); } public static void main(String[] args) throws IOException { @@ -34,6 +38,14 @@ public class PongApp { while(true){ try { kernel.update(); + + if (leftRacket.getPosition() == pongBall.getPosition()|| rightRacket.getPosition() == pongBall.getPosition()) { + soundEngine.playPaddleHitSound(); + } else if (pongBall.getHeight() <= 0 || pongBall.getWidth() + pongBall.getWidth() >= width) { + soundEngine.playWallHitSound(); + } else if (pongBall.getHeight() < 0 || pongBall.getWidth() + pongBall.getWidth() > width) { + soundEngine.playPointScoredSound(); + } Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); -- GitLab