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