diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index d566bcba0a43683e62006819d52226ed10b85d34..85acb7c70cb7bcf6957812f82cf17998a873602a 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -49,6 +49,8 @@ public class Kernel { this.update(); this.setKeysAndKeyReleasedListeners((JPanel) this.graphicEngine.getContentPane()); soundEngine = new SoundEngine(); + String music = "src/main/resources/Sound/son.wav"; + SoundEngine.playMusic(music); start(); } @@ -194,4 +196,8 @@ public class Kernel { button.setSize(50, 30); graphicEngine.addButton(button); } + + public void addLabel(JLabel label){ + graphicEngine.addLabel(label); + } } diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java index 7757f48f26455174b2f7b6f5e4c29a3495dc534c..3e88eb6d73d861c1d47f5a8c60dfa31fd76498f3 100644 --- a/src/main/java/engine/graphic/GraphicEngine.java +++ b/src/main/java/engine/graphic/GraphicEngine.java @@ -3,12 +3,14 @@ package engine.graphic; import engine.Engine; import engine.Kernel; import engine.physic.Coordinates2D; +import engine.sound.SoundEngine; import pong.PongApp; import pong.PongObject; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.io.IOException; public class GraphicEngine extends JFrame implements Engine { diff --git a/src/main/java/engine/sound/SoundEngine.java b/src/main/java/engine/sound/SoundEngine.java index edb29546648c4de244816d1bfc0767ef6391e0b4..7e25d1f912a46ac1216f49b0f60c7d042fb86bcc 100644 --- a/src/main/java/engine/sound/SoundEngine.java +++ b/src/main/java/engine/sound/SoundEngine.java @@ -7,8 +7,10 @@ import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; +import javax.swing.*; public class SoundEngine implements Engine { + private static Clip clip; // Ajout de cette variable pour stocker le clip en cours de lecture public SoundEngine(){} public static void playMusic(String location){ @@ -16,7 +18,7 @@ public class SoundEngine implements Engine { File musicPath = new File(location); if (musicPath.exists()) { AudioInputStream audioInput = AudioSystem.getAudioInputStream(musicPath); - Clip clip = AudioSystem.getClip(); + clip = AudioSystem.getClip(); clip.open(audioInput); clip.start(); } @@ -29,6 +31,12 @@ public class SoundEngine implements Engine { } } + public static void stopMusic() { + if (clip != null && clip.isRunning()) { + clip.stop(); + } + } + @Override public void update() { if (Kernel.isCollision){ @@ -36,8 +44,11 @@ public class SoundEngine implements Engine { SoundEngine.playMusic(collisionPath); Kernel.isCollision = false; } + } + + @Override public void restart() { diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index c542ca948e94ad9595260d97f7822ff73fa471bb..6576366c58b56c53fed6530370387daa654c63ef 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -2,9 +2,12 @@ package pong; import engine.physic.Coordinates2D; import engine.Kernel; +import engine.sound.SoundEngine; import javax.swing.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.io.IOException; import java.util.ArrayList; @@ -46,6 +49,18 @@ public class PongApp { Kernel kernel = new Kernel("Pong", width, height, components); JButton button = new JButton("Restart"); + JButton button2 = new JButton("Mute"); + + /*JLabel muteLabel = new JLabel(new ImageIcon("src/main/resources/Sound/mute.png")); + // définir la taille de l'image + muteLabel.setBounds(0, 0, 10, 50); + muteLabel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + // Mettez ici le code pour gérer le clic sur l'image (par exemple, pour activer/désactiver le son) + SoundEngine.stopMusic(); // Exemple, vous devrez implémenter cette méthode + } + });*/ button.addActionListener(e -> { score1 = 0; score2 = 0; @@ -59,7 +74,10 @@ public class PongApp { } }); + button2.addActionListener(e -> SoundEngine.stopMusic()); kernel.addButton(button); // Add a button to restart the game + kernel.addButton(button2); // Add a button to mute the game + //kernel.addLabel(muteLabel); // Add a button to mute the game final long MIN_INTERVAL_TIME = 10; // Minimum time between two iterations @@ -91,6 +109,7 @@ public class PongApp { } + } /** @@ -100,4 +119,6 @@ public class PongApp { isGoal = false; components.get(2).setPosition(new Coordinates2D(width/2, height/2)); } + + } diff --git a/src/main/resources/Sound/mute.png b/src/main/resources/Sound/mute.png new file mode 100644 index 0000000000000000000000000000000000000000..fc04f07553d2823bfd23646545bd0407ded76315 Binary files /dev/null and b/src/main/resources/Sound/mute.png differ