diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index 843d7f3a819e62eb22df99713f4fcbb3c6ede504..1b6333a2c0a657beb9dbb281912e7dcdaf5902a7 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -40,7 +40,7 @@ public class Kernel { engines.add(physicEngine); pongObjectEntityHashMap = physicEngine.pongObjectEntityHashMap; - this.start(); + this.update(); this.setKeysListeners((JPanel) this.graphicEngine.getContentPane()); } @@ -62,7 +62,7 @@ public class Kernel { * One step of the game. Update all objects positions and repaint the grid. */ public void update() { - System.out.println("One step"); + //System.out.println("One step"); // Updating all objects positions for (Engine engine: engines diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java index 64ac67034aa26fdb99a7e5c5d57dd54ebe414349..657134dcfc23120ecebee94cdccc3abbd401611f 100644 --- a/src/main/java/engine/physic/PhysicEngine.java +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -8,6 +8,8 @@ import pong.PongObject; import java.util.HashMap; public class PhysicEngine implements Engine { + + int i = 0; public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>(); private HashMap<Coordinates2D, PongObject> positions = new HashMap<>(); @@ -26,14 +28,34 @@ public class PhysicEngine implements Engine { @Override public void update(){ for (PongObject pongObject: Kernel.gameObjects) { - pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position + Coordinates2D previousPosition = pongObjectEntityHashMap.get(pongObject).getPosition(); + pongObjectEntityHashMap.get(pongObject).updatePosition();// Updating of the associated movable position + if(pongObject.getName().equals("Ball")){ + for (PongObject po2: pongObjectEntityHashMap.keySet() + ) { + if(!po2.getName().equals("Ball")){ + if(checkCollision(pongObjectEntityHashMap.get(pongObject), pongObjectEntityHashMap.get(po2))){ + i++; + System.out.println("Collision " + i); + pongObjectEntityHashMap.get(pongObject).setPosition(previousPosition); + pongObjectEntityHashMap.get(pongObject).getSpeed().mul(-1); + pongObjectEntityHashMap.get(pongObject).updatePosition(); + } + } + } + } //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 + public boolean checkCollision(Entity firstObject, Entity secondObject){ + Coordinates2D pos1 = firstObject.getPosition(); + Coordinates2D pos2 = secondObject.getPosition(); + return pos1.getX() < pos2.getX() + secondObject.getWidth() && + pos1.getX() + firstObject.getWidth() > pos2.getX() && + pos1.getY() < pos2.getY() + secondObject.getHeight() && + firstObject.getHeight() + pos1.getY() > pos2.getY(); } }