diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index e06b279352eca1947fe1efdbe9baf2c59afc58c8..d566bcba0a43683e62006819d52226ed10b85d34 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -22,6 +22,8 @@ public class Kernel { SoundEngine soundEngine =new SoundEngine(); public static boolean isCollision = false; + public int isFirstUpdate = 0; + //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>(); @@ -57,13 +59,16 @@ public class Kernel { */ public void start() throws IOException { graphicEngine.start(); + } public void restart() throws IOException { + for (Engine engine: engines ) { engine.restart(); } + isFirstUpdate = 0; //pongObjectEntityHashMap = physicEngine.pongObjectEntityHashMap; } @@ -72,11 +77,20 @@ public class Kernel { * One step of the game. Update all objects positions and repaint the grid. */ public void update() { - + //System.out.println(gameObjects.get(0).getInitPosition().getX() + " " + gameObjects.get(2).getInitPosition().getY()); + if(isFirstUpdate == 1){ + try { + Thread.sleep(1000); + //isFirstUpdate = false; + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } for (Engine engine: engines ) { engine.update(); } + isFirstUpdate++; } diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java index e0f2234f6b3aa3ee87b3a101d070c694eda6bc6c..63ee86879ed6fc122986df2415e6fa05ff072f03 100644 --- a/src/main/java/engine/physic/PhysicEngine.java +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -10,20 +10,11 @@ import java.util.Random; public class PhysicEngine implements Engine { int i = 0; - public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); + public HashMap<PongObject, Entity> pongObjectEntityHashMap; // Map of the pong objects and their associated entity - private HashMap<Coordinates2D, PongObject> positions = new HashMap<>(); + //private HashMap<Coordinates2D, PongObject> positions; // Map of the positions and the associated pong object public PhysicEngine(){ - for (PongObject pongObject: Kernel.gameObjects) { - Coordinates2D speed = new Coordinates2D(0, 0); - if(pongObject.getName().equals("Ball")){ - speed = new Coordinates2D(2, 2); - } - //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); - - } + restart(); } @Override public void update(){ @@ -31,6 +22,8 @@ public class PhysicEngine implements Engine { Coordinates2D previousPosition = pongObjectEntityHashMap.get(pongObject).getPosition(); pongObjectEntityHashMap.get(pongObject).updatePosition();// Updating of the associated movable position if(pongObject.getName().equals("Ball")){ + System.out.println("Ball position: " + pongObjectEntityHashMap.get(pongObject).getPosition().getX() + " ; " + pongObjectEntityHashMap.get(pongObject).getPosition().getY()); + //System.out.println("Ball init position: " + pongObjectEntityHashMap.get(pongObject).getInitPosition()); for (PongObject po2: pongObjectEntityHashMap.keySet() ) { if(!po2.getName().equals("Ball")){ @@ -60,15 +53,16 @@ public class PhysicEngine implements Engine { @Override public void restart() { - //pongObjectEntityHashMap = new HashMap<>(); + pongObjectEntityHashMap = new HashMap<>(); + //positions = new HashMap<>(); for (PongObject pongObject: Kernel.gameObjects) { Coordinates2D speed = new Coordinates2D(0, 0); if(pongObject.getName().equals("Ball")){ + //pongObject.setPosition(pongObject.getInitPosition()); speed = new Coordinates2D(2, 2); } //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); } } diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index e6e563e53b3c16685eb5bfdbe35df28ccbd4e399..06a0ea2bdeef0b27ed9a3dad484e17fcddf4f16f 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -51,6 +51,8 @@ public class PongApp { score2 = 0; System.out.println("Restarting"); try { + restart(); + //kernel.setGameObject(components); kernel.restart(); } catch (IOException ex) { throw new RuntimeException(ex); @@ -69,7 +71,7 @@ public class PongApp { if(isGoal){ System.out.println(score1 + " : " + score2); restart(); - kernel.setGameObject(components); + //kernel.setGameObject(components); kernel.restart(); } diff --git a/src/main/java/pong/PongBall.java b/src/main/java/pong/PongBall.java index 673469c4c2a69dae5293ff1e78676125f2560829..12f7ab5bfee3f9efce05e39fd2622fe727262428 100644 --- a/src/main/java/pong/PongBall.java +++ b/src/main/java/pong/PongBall.java @@ -10,7 +10,7 @@ public class PongBall implements PongObject { private final int width; private final int height; private Coordinates2D position; - private final Coordinates2D initPosition; + private Coordinates2D initPosition; private final Image image; PongBall(String name, String imagePath, Coordinates2D position, int width, int height){ @@ -60,6 +60,6 @@ public class PongBall implements PongObject { @Override public Coordinates2D getInitPosition() { - return initPosition; + return this.initPosition; } }