diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index ce338264263a030a2f71a7b2142b5baadaa2ff41..14abde27555311a3c24a1e3b914dd13b6c6cfd56 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 551b88ca9a3c62475b0db2787e1883023c6a4fab..8fef044b2c1960c7c1a2b48aeda836a88c59baa4 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 0000000000000000000000000000000000000000..bbde00a41f19145c8c9539d62be101a659029f56 --- /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 cb371dc4888765ac395986d653acf96ac6fca36b..f56f2e8335a3af1a724221d959bf399e7d68f734 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 c3ddf0b89bf53cb36739e921389bf2deecc427db..edb29546648c4de244816d1bfc0767ef6391e0b4 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 85645faff61452efab51882091a8c65ec9b23926..51b1521cdaa7c4106fecaa79db6d3c5f5bc82e54 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);