diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index 7a13747bbde5e25c9486da64f957d521ebf23cc7..aaeb8735284f52bf962a9ba05a504447e44313ba 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 c284e0a37c1a90fbe5fb0fc5783f640a0b3297f5..f78e8cb320cb71b68b4cf57da1a1a56484b0e2f8 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 578ef153cc30fde9863c5f894043886f1046aacd..9b1fd46dcfa9ff995df296cd3bf0d41a796773dd 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 beb4b7ecde76179b66eb8d49a5bae2da93961bcb..b62d88a86e2f5ccb856773fcfd62dd27f5376c28 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 f6ecdb13bad69cf8c20cd0de4f066fd4af69e056..8b7e9aaa853e4dccc672dbc17c05e5a41c3fceea 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 0261f5a791b480cfcead01ab77cdedc5b437d283..64ac67034aa26fdb99a7e5c5d57dd54ebe414349 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 5040f2d72d9fe16cd8e4debf9abcbbb1a865f86d..3a4d16043fa8bfe3c461ebd7d08d98c140dff06a 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(); }