From 07109f5b840c9b9036e985cea756bee7b3e08b52 Mon Sep 17 00:00:00 2001 From: bosskkev <kossivikevin29@gmail.com> Date: Mon, 6 Nov 2023 23:54:06 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9tection=20des=20collisions=20entre=20la?= =?UTF-8?q?=20balle=20et=20les=20raquettes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/engine/Kernel.java | 4 +-- src/main/java/engine/physic/PhysicEngine.java | 28 +++++++++++++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index 843d7f3..1b6333a 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 64ac670..657134d 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(); } } -- GitLab