From 8cd51e127363e747463dea303b9e27db3eacb812 Mon Sep 17 00:00:00 2001 From: Augier Yoann <yoann.augier@etu.univ-amu.fr> Date: Mon, 13 Nov 2023 15:18:09 +0100 Subject: [PATCH] Correction du SoundEngine --- src/main/java/engine/Kernel.java | 14 ++++---- .../java/engine/graphic/GraphicEngine.java | 5 +++ .../java/engine/graphic/ScoreComponent.java | 33 +++++++++++++++++++ src/main/java/engine/physic/PhysicEngine.java | 6 ++-- .../{Sound.java => sound/SoundEngine.java} | 23 +++++++++++-- src/main/java/pong/PongApp.java | 3 -- 6 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 src/main/java/engine/graphic/ScoreComponent.java rename src/main/java/engine/{Sound.java => sound/SoundEngine.java} (61%) diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index ce33826..14abde2 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -3,24 +3,24 @@ package engine; import engine.graphic.GraphicEngine; import engine.physic.Coordinates2D; import engine.physic.Entity; -import engine.physic.Movable; +import engine.sound.SoundEngine; import engine.physic.PhysicEngine; -import pong.PongApp; import pong.PongObject; -import pong.PongRacket; import javax.swing.*; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; -import java.util.Random; public class Kernel { ArrayList<Engine> engines = new ArrayList<Engine>(); PhysicEngine physicEngine; GraphicEngine graphicEngine; + SoundEngine soundEngine =new SoundEngine(); + public static boolean isCollision = false; + //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>(); @@ -39,10 +39,12 @@ public class Kernel { engines.add(this.graphicEngine);// this.physicEngine = new PhysicEngine(); engines.add(physicEngine); + engines.add(soundEngine); pongObjectEntityHashMap = physicEngine.pongObjectEntityHashMap; this.update(); this.setKeysAndKeyReleasedListeners((JPanel) this.graphicEngine.getContentPane()); + soundEngine = new SoundEngine(); } /** @@ -74,9 +76,7 @@ public class Kernel { ) { engine.update(); } - // Repainting the grid - graphicEngine.repaint(); - graphicEngine.revalidate(); + } /** diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java index 551b88c..8fef044 100644 --- a/src/main/java/engine/graphic/GraphicEngine.java +++ b/src/main/java/engine/graphic/GraphicEngine.java @@ -2,6 +2,7 @@ package engine.graphic; import engine.Engine; import engine.Kernel; +import engine.physic.Coordinates2D; import pong.PongApp; import pong.PongObject; @@ -48,6 +49,7 @@ public class GraphicEngine extends JFrame implements Engine { throw new RuntimeException(e); } } + getContentPane().add(new ScoreComponent(new Coordinates2D(100, 100), new Coordinates2D(670, 100), PongApp.score1, PongApp.score2)); repaint(); revalidate(); } @@ -63,5 +65,8 @@ public class GraphicEngine extends JFrame implements Engine { this.getContentPane().add(new RectangleComponent(100, 100, PongApp.rectWidth, PongApp.rectHeight)); } + public void drawScore(int score1, int score2){ + this.getContentPane().add(new ScoreComponent(new Coordinates2D(100, 100), new Coordinates2D(500, 100), score1, score2)); + } } diff --git a/src/main/java/engine/graphic/ScoreComponent.java b/src/main/java/engine/graphic/ScoreComponent.java new file mode 100644 index 0000000..bbde00a --- /dev/null +++ b/src/main/java/engine/graphic/ScoreComponent.java @@ -0,0 +1,33 @@ +package engine.graphic; + +import engine.physic.Coordinates2D; +import pong.PongApp; + +import javax.swing.*; +import java.awt.*; + +public class ScoreComponent extends JComponent { + private int score1; + private int score2; + Coordinates2D position1; + Coordinates2D position2; + + public ScoreComponent(Coordinates2D position1, Coordinates2D position2, int score1, int score2) { + this.score1 = score1; + this.score2 = score2; + this.position1 = position1; + this.position2 = position2; + this.setSize(PongApp.width, PongApp.height); + this.setVisible(true); + this.setLayout(null); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + g.setColor(Color.WHITE); + g.setFont(new Font("Anton", Font.PLAIN, 50)); + g.drawString(String.valueOf(score1), position1.getX(), position1.getY()); + g.drawString(String.valueOf(score2), position2.getX(), position2.getY()); + } +} diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java index cb371dc..f56f2e8 100644 --- a/src/main/java/engine/physic/PhysicEngine.java +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -2,7 +2,6 @@ package engine.physic; import engine.Engine; import engine.Kernel; -import engine.Sound; import pong.PongObject; import java.util.HashMap; @@ -37,8 +36,9 @@ public class PhysicEngine implements Engine { if(!po2.getName().equals("Ball")){ if(checkCollision(pongObjectEntityHashMap.get(pongObject), pongObjectEntityHashMap.get(po2))){ i++; - String collisionPath = "src/main/resources/Sound/collision.wav"; - Sound.playMusic(collisionPath); + //String collisionPath = "src/main/resources/Sound/collision.wav"; + //Sound.playMusic(collisionPath); + Kernel.isCollision = true; System.out.println("Collision " + i); pongObjectEntityHashMap.get(pongObject).setPosition(previousPosition); if(i % 2 == 0){ diff --git a/src/main/java/engine/Sound.java b/src/main/java/engine/sound/SoundEngine.java similarity index 61% rename from src/main/java/engine/Sound.java rename to src/main/java/engine/sound/SoundEngine.java index c3ddf0b..edb2954 100644 --- a/src/main/java/engine/Sound.java +++ b/src/main/java/engine/sound/SoundEngine.java @@ -1,11 +1,16 @@ -package engine; +package engine.sound; + +import engine.Engine; +import engine.Kernel; import java.io.File; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; -public class Sound { +public class SoundEngine implements Engine { + + public SoundEngine(){} public static void playMusic(String location){ try { File musicPath = new File(location); @@ -23,5 +28,19 @@ public class Sound { System.out.println(e); } } + + @Override + public void update() { + if (Kernel.isCollision){ + String collisionPath = "src/main/resources/Sound/collision.wav"; + 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 85645fa..51b1521 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -1,6 +1,5 @@ package pong; -import engine.Sound; import engine.physic.Coordinates2D; import engine.Kernel; @@ -36,8 +35,6 @@ public class PongApp { int ballWidth = 32; - String son = "src/main/resources/Sound/minecraft_butdrill.wav"; - Sound.playMusic(son); PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette.png", new Coordinates2D(widthDiff + 5, height/2 - racketHeight/2), racketWidth, racketHeight); components.add(leftRacket); -- GitLab