From ee6f9170b4081bd0500dd4f1eb475971fb215ae3 Mon Sep 17 00:00:00 2001 From: bosskkev <kossivikevin29@gmail.com> Date: Mon, 6 Nov 2023 16:18:50 +0100 Subject: [PATCH] =?UTF-8?q?Rajout=20interface=20Engine=20et=20son=20impl?= =?UTF-8?q?=C3=A9mentation=20dans=20les=20diff=C3=A9rents=20moteurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/engine/Kernel.java | 44 +++++++++---------- .../{Grid.java => graphic/GraphicEngine.java} | 8 ++-- .../engine/{ => graphic}/ImageComponent.java | 4 +- .../engine/{ => physic}/Coordinates2D.java | 2 +- src/main/java/engine/{ => physic}/Entity.java | 4 +- .../java/engine/{ => physic}/Movable.java | 4 +- .../java/engine/{ => physic}/NotMovable.java | 5 ++- src/main/java/engine/physic/PhysicEngine.java | 31 +++++++++++++ src/main/java/pong/PongApp.java | 6 +-- src/main/java/pong/PongBall.java | 2 +- src/main/java/pong/PongObject.java | 2 +- src/main/java/pong/PongRacket.java | 2 +- src/main/java/sprint2_demo/Grid.java | 1 + src/main/java/sprint2_demo/Hero.java | 2 +- src/test/java/engine/PongObjectTest.java | 2 + 15 files changed, 78 insertions(+), 41 deletions(-) rename src/main/java/engine/{Grid.java => graphic/GraphicEngine.java} (86%) rename src/main/java/engine/{ => graphic}/ImageComponent.java (94%) rename src/main/java/engine/{ => physic}/Coordinates2D.java (97%) rename src/main/java/engine/{ => physic}/Entity.java (96%) rename src/main/java/engine/{ => physic}/Movable.java (94%) rename src/main/java/engine/{ => physic}/NotMovable.java (92%) create mode 100644 src/main/java/engine/physic/PhysicEngine.java diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index 3782c35..7a13747 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -1,5 +1,10 @@ package engine; +import engine.graphic.GraphicEngine; +import engine.physic.Coordinates2D; +import engine.physic.Entity; +import engine.physic.Movable; +import engine.physic.PhysicEngine; import pong.PongApp; import pong.PongObject; @@ -12,12 +17,12 @@ import java.util.Random; public class Kernel { ArrayList<Engine> engines = new ArrayList<Engine>(); - engine.Grid grid; + GraphicEngine graphicEngine; //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>(); - protected static ArrayList<PongObject> gameObjects; - protected HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); + public static ArrayList<PongObject> gameObjects; + public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); Movable movable; public Kernel(String gameName, int width, int height, ArrayList<PongObject> gameObjects) throws IOException { @@ -25,13 +30,15 @@ public class Kernel { this.setGameObject(gameObjects); System.out.println("Model created"); - this.grid = new Grid(); // Will create a new grid and a new kernel - grid.init(gameName, width, height); // Will start the kernel and set the keys listeners + this.graphicEngine = new GraphicEngine(); // Will create a new grid and a new kernel + graphicEngine.init(gameName, width, height); // Will start the kernel and set the keys listeners - engines.add(this.grid);// + engines.add(this.graphicEngine);// + + engines.add(new PhysicEngine()); this.start(); - this.setKeysListeners((JPanel) this.grid.getContentPane()); + this.setKeysListeners((JPanel) this.graphicEngine.getContentPane()); } /** @@ -42,17 +49,9 @@ public class Kernel { public void start() throws IOException { Random random = new Random(); // For random speed - for (PongObject pongObject: PongApp.components) { - Coordinates2D speed = new Coordinates2D(0, 0); - if(pongObject.getName().equals("Ball")){ - speed = new Coordinates2D(1, 1); - } - //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1); - pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight())); + graphicEngine.update(); - } - grid.update(); } @@ -62,15 +61,14 @@ public class Kernel { public void update() { System.out.println("One step"); // Updating all objects positions - for (PongObject pongObject: PongApp.components) { - pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position - pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position + for (Engine engine: engines + ) { + engine.update(); } - grid.update(); // Repainting the grid - grid.repaint(); - grid.revalidate(); + graphicEngine.repaint(); + graphicEngine.revalidate(); } /** @@ -100,6 +98,6 @@ public class Kernel { } public void setGameObject(ArrayList<PongObject> gameObject) { - this.gameObjects = gameObject; + gameObjects = gameObject; } } diff --git a/src/main/java/engine/Grid.java b/src/main/java/engine/graphic/GraphicEngine.java similarity index 86% rename from src/main/java/engine/Grid.java rename to src/main/java/engine/graphic/GraphicEngine.java index 7b18698..c284e0a 100644 --- a/src/main/java/engine/Grid.java +++ b/src/main/java/engine/graphic/GraphicEngine.java @@ -1,14 +1,16 @@ -package engine; +package engine.graphic; +import engine.Engine; +import engine.Kernel; import pong.PongObject; import javax.swing.*; import java.awt.*; import java.io.IOException; -public class Grid extends JFrame implements Engine { +public class GraphicEngine extends JFrame implements Engine { - public Grid() throws IOException { + public GraphicEngine() throws IOException { } public void init(String windowTitle, int width, int height) throws IOException { diff --git a/src/main/java/engine/ImageComponent.java b/src/main/java/engine/graphic/ImageComponent.java similarity index 94% rename from src/main/java/engine/ImageComponent.java rename to src/main/java/engine/graphic/ImageComponent.java index 436f46b..fd98476 100644 --- a/src/main/java/engine/ImageComponent.java +++ b/src/main/java/engine/graphic/ImageComponent.java @@ -1,4 +1,6 @@ -package engine; +package engine.graphic; + +import engine.physic.Coordinates2D; import javax.swing.*; import java.awt.*; diff --git a/src/main/java/engine/Coordinates2D.java b/src/main/java/engine/physic/Coordinates2D.java similarity index 97% rename from src/main/java/engine/Coordinates2D.java rename to src/main/java/engine/physic/Coordinates2D.java index 7cb1119..d9870e7 100644 --- a/src/main/java/engine/Coordinates2D.java +++ b/src/main/java/engine/physic/Coordinates2D.java @@ -1,4 +1,4 @@ -package engine; +package engine.physic; public class Coordinates2D { private int x; diff --git a/src/main/java/engine/Entity.java b/src/main/java/engine/physic/Entity.java similarity index 96% rename from src/main/java/engine/Entity.java rename to src/main/java/engine/physic/Entity.java index c9a2460..578ef15 100644 --- a/src/main/java/engine/Entity.java +++ b/src/main/java/engine/physic/Entity.java @@ -1,4 +1,6 @@ -package engine; +package engine.physic; + +import engine.physic.Coordinates2D; /** * Interface for all entities in the game diff --git a/src/main/java/engine/Movable.java b/src/main/java/engine/physic/Movable.java similarity index 94% rename from src/main/java/engine/Movable.java rename to src/main/java/engine/physic/Movable.java index d085131..beb4b7e 100644 --- a/src/main/java/engine/Movable.java +++ b/src/main/java/engine/physic/Movable.java @@ -1,4 +1,4 @@ -package engine; +package engine.physic; import pong.PongApp; @@ -13,7 +13,7 @@ public class Movable implements Entity { private Coordinates2D acceleration; - Movable(int weight, Coordinates2D position, Coordinates2D speed, Coordinates2D acceleration, int width, int height) { + public Movable(int weight, Coordinates2D position, Coordinates2D speed, Coordinates2D acceleration, int width, int height) { this.weight = weight; this.speed = speed; this.position = position; diff --git a/src/main/java/engine/NotMovable.java b/src/main/java/engine/physic/NotMovable.java similarity index 92% rename from src/main/java/engine/NotMovable.java rename to src/main/java/engine/physic/NotMovable.java index 55d882e..f6ecdb1 100644 --- a/src/main/java/engine/NotMovable.java +++ b/src/main/java/engine/physic/NotMovable.java @@ -1,4 +1,7 @@ -package engine; +package engine.physic; + +import engine.physic.Coordinates2D; +import engine.physic.Entity; /** * Class for all obstacles in the game. diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java new file mode 100644 index 0000000..0261f5a --- /dev/null +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -0,0 +1,31 @@ +package engine.physic; + +import engine.Engine; +import engine.Kernel; +import pong.PongApp; +import pong.PongObject; + +import java.util.HashMap; + +public class PhysicEngine implements Engine { + public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); + public PhysicEngine(){ + for (PongObject pongObject: Kernel.gameObjects) { + Coordinates2D speed = new Coordinates2D(0, 0); + if(pongObject.getName().equals("Ball")){ + speed = new Coordinates2D(1, 1); + } + //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1); + pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight())); + + + } + } + @Override + public void update(){ + for (PongObject pongObject: Kernel.gameObjects) { + pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position + pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position + } + } +} diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index 8d06861..5040f2d 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -1,12 +1,8 @@ package pong; -import engine.Coordinates2D; -import engine.Grid; -import engine.ImageComponent; +import engine.physic.Coordinates2D; import engine.Kernel; -import sprint2_demo.Hero; -import javax.swing.*; import java.io.IOException; import java.util.ArrayList; diff --git a/src/main/java/pong/PongBall.java b/src/main/java/pong/PongBall.java index 0bd4008..2f8daf4 100644 --- a/src/main/java/pong/PongBall.java +++ b/src/main/java/pong/PongBall.java @@ -1,6 +1,6 @@ package pong; -import engine.Coordinates2D; +import engine.physic.Coordinates2D; import java.awt.*; diff --git a/src/main/java/pong/PongObject.java b/src/main/java/pong/PongObject.java index 67be737..e12fdbb 100644 --- a/src/main/java/pong/PongObject.java +++ b/src/main/java/pong/PongObject.java @@ -1,6 +1,6 @@ package pong; -import engine.Coordinates2D; +import engine.physic.Coordinates2D; import java.awt.*; diff --git a/src/main/java/pong/PongRacket.java b/src/main/java/pong/PongRacket.java index 9198ef5..a9b69bb 100644 --- a/src/main/java/pong/PongRacket.java +++ b/src/main/java/pong/PongRacket.java @@ -1,6 +1,6 @@ package pong; -import engine.Coordinates2D; +import engine.physic.Coordinates2D; import java.awt.*; diff --git a/src/main/java/sprint2_demo/Grid.java b/src/main/java/sprint2_demo/Grid.java index c96e56a..e92f49b 100644 --- a/src/main/java/sprint2_demo/Grid.java +++ b/src/main/java/sprint2_demo/Grid.java @@ -1,6 +1,7 @@ package sprint2_demo; import engine.*; +import engine.physic.Coordinates2D; import javax.swing.*; import java.awt.*; diff --git a/src/main/java/sprint2_demo/Hero.java b/src/main/java/sprint2_demo/Hero.java index f7a9d7b..24cf15e 100644 --- a/src/main/java/sprint2_demo/Hero.java +++ b/src/main/java/sprint2_demo/Hero.java @@ -1,6 +1,6 @@ package sprint2_demo; -import engine.Coordinates2D; +import engine.physic.Coordinates2D; import javax.imageio.ImageIO; import java.awt.*; diff --git a/src/test/java/engine/PongObjectTest.java b/src/test/java/engine/PongObjectTest.java index fbc681d..4f41b0e 100644 --- a/src/test/java/engine/PongObjectTest.java +++ b/src/test/java/engine/PongObjectTest.java @@ -1,5 +1,7 @@ package engine; +import engine.physic.Coordinates2D; +import engine.physic.Movable; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; -- GitLab