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