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 b9dce4cc9f1d1968ebf2172bf0ad0e7f01d886f3..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,20 +19,21 @@ 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())); - /*if(pongObject.getName().equals("Left racket")){ - pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), new Coordinates2D(0,1), new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight())); - } + positions.put(pongObject.getPosition(), pongObject); - if(pongObject.getName().equals("Right racket")){ - pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), new Coordinates2D(0,1), 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 + //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 fe1bba22dfc620a88b13ae8bb5f6661ff3f87d1e..3a4d16043fa8bfe3c461ebd7d08d98c140dff06a 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -5,8 +5,6 @@ import engine.Kernel; import java.io.IOException; import java.util.ArrayList; -import java.util.Timer; -import java.util.TimerTask; public class PongApp { @@ -32,15 +30,14 @@ public class PongApp { Kernel kernel = new Kernel("Pong", width, height, components); //kernel.setGameObject(components); - Timer timer = new Timer(); - int delay = 0; // Délai initial avant la première exécution (en millisecondes) - int interval = 1; // Intervalle entre les exécutions (en millisecondes) - timer.schedule(new TimerTask() { - @Override - public void run() { + while(true){ + try { kernel.update(); + Thread.sleep(1); + } catch (InterruptedException e) { + e.printStackTrace(); } - }, delay, interval); + } } }