From 4f3658a3f4565869bf80443624e78be81ac988b4 Mon Sep 17 00:00:00 2001 From: bosskkev <kossivikevin29@gmail.com> Date: Mon, 6 Nov 2023 16:56:44 +0100 Subject: [PATCH] Modification d'Entity --- src/main/java/engine/Kernel.java | 35 ++++++------------- .../java/engine/graphic/GraphicEngine.java | 3 +- src/main/java/engine/physic/Entity.java | 3 ++ src/main/java/engine/physic/Movable.java | 10 ++++++ src/main/java/engine/physic/NotMovable.java | 10 ++++++ src/main/java/engine/physic/PhysicEngine.java | 10 +++++- src/main/java/pong/PongApp.java | 3 +- 7 files changed, 47 insertions(+), 27 deletions(-) diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index 7a13747..aaeb873 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -16,29 +16,23 @@ import java.util.Random; public class Kernel { - ArrayList<Engine> engines = new ArrayList<Engine>(); - GraphicEngine graphicEngine; - - //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>(); - + ArrayList<Engine> engines = new ArrayList<>(); 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 { - this.setGameObject(gameObjects); System.out.println("Model created"); - 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.graphicEngine);// + GraphicEngine graphicEngine = new GraphicEngine(); + graphicEngine.init(gameName, width, height); - engines.add(new PhysicEngine()); + engines.add(graphicEngine); //Adding graphic engine + engines.add(new PhysicEngine()); //Adding physic engine this.start(); - this.setKeysListeners((JPanel) this.graphicEngine.getContentPane()); + this.setKeysListeners((JPanel) graphicEngine.getContentPane()); } /** @@ -47,11 +41,10 @@ public class Kernel { * @throws IOException */ public void start() throws IOException { - Random random = new Random(); // For random speed - - - graphicEngine.update(); - + for (Engine engine: engines + ) { + engine.update(); + } } @@ -60,15 +53,10 @@ public class Kernel { */ public void update() { System.out.println("One step"); - // Updating all objects positions - for (Engine engine: engines ) { engine.update(); } - // Repainting the grid - graphicEngine.repaint(); - graphicEngine.revalidate(); } /** @@ -78,7 +66,6 @@ public class Kernel { mainPanel.addKeyListener(new java.awt.event.KeyAdapter() { public void keyPressed(java.awt.event.KeyEvent evt) { switch (evt.getKeyCode()) { - // J'ai essayƩ mais je me perds pour gerer les debordements case java.awt.event.KeyEvent.VK_UP -> { movable.setSpeed(new Coordinates2D(0, -1)); } diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java index c284e0a..f78e8cb 100644 --- a/src/main/java/engine/graphic/GraphicEngine.java +++ b/src/main/java/engine/graphic/GraphicEngine.java @@ -40,8 +40,9 @@ public class GraphicEngine extends JFrame implements Engine { } catch (IOException e) { throw new RuntimeException(e); } - } + repaint(); + revalidate(); } diff --git a/src/main/java/engine/physic/Entity.java b/src/main/java/engine/physic/Entity.java index 578ef15..9b1fd46 100644 --- a/src/main/java/engine/physic/Entity.java +++ b/src/main/java/engine/physic/Entity.java @@ -78,4 +78,7 @@ public interface Entity { */ public void halt(); + int getWidth(); + + int getHeight(); } diff --git a/src/main/java/engine/physic/Movable.java b/src/main/java/engine/physic/Movable.java index beb4b7e..b62d88a 100644 --- a/src/main/java/engine/physic/Movable.java +++ b/src/main/java/engine/physic/Movable.java @@ -97,4 +97,14 @@ public class Movable implements Entity { } } + + @Override + public int getWidth() { + return width; + } + + @Override + public int getHeight() { + return height; + } } diff --git a/src/main/java/engine/physic/NotMovable.java b/src/main/java/engine/physic/NotMovable.java index f6ecdb1..8b7e9aa 100644 --- a/src/main/java/engine/physic/NotMovable.java +++ b/src/main/java/engine/physic/NotMovable.java @@ -68,4 +68,14 @@ public class NotMovable implements Entity { } + @Override + public int getWidth() { + return 0; + } + + @Override + public int getHeight() { + return 0; + } + } diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java index 0261f5a..64ac670 100644 --- a/src/main/java/engine/physic/PhysicEngine.java +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -9,6 +9,8 @@ import java.util.HashMap; public class PhysicEngine implements Engine { public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); + + private HashMap<Coordinates2D, PongObject> positions = new HashMap<>(); public PhysicEngine(){ for (PongObject pongObject: Kernel.gameObjects) { Coordinates2D speed = new Coordinates2D(0, 0); @@ -17,7 +19,7 @@ public class PhysicEngine implements Engine { } //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())); - + positions.put(pongObject.getPosition(), pongObject); } } @@ -25,7 +27,13 @@ public class PhysicEngine implements Engine { public void update(){ for (PongObject pongObject: Kernel.gameObjects) { pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position + //checkCollision(); pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position } } + + public void checkCollision(Entity firstObject, Entity secondObject){ + //TODO: check collision between two objects + } + } diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index 5040f2d..3a4d160 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -30,10 +30,11 @@ public class PongApp { Kernel kernel = new Kernel("Pong", width, height, components); //kernel.setGameObject(components); + while(true){ try { kernel.update(); - Thread.sleep(10); + Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } -- GitLab