From 27581b2842bb915c3977448f40e7c8285eff8cbb Mon Sep 17 00:00:00 2001 From: incentV Date: Wed, 25 Mar 2026 10:55:27 +0100 Subject: [PATCH] reglages beug de colision des bonus et malus --- src/linea/Jeu.java | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/linea/Jeu.java b/src/linea/Jeu.java index e015738..3b35abb 100644 --- a/src/linea/Jeu.java +++ b/src/linea/Jeu.java @@ -60,9 +60,6 @@ public class Jeu implements KeyListener, ActionListener { menuLeaderboard = new MenuLeaderboard(this); menuHistorique = new MenuHistorique(this); - // Initialisation initiale - resetPartie(6, 20); - ecran.btnRetour.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -217,11 +214,22 @@ public class Jeu implements KeyListener, ActionListener { for (int i = ecran.listeObjets.size() - 1; i >= 0; i--) { ObjetGraphique obj = ecran.listeObjets.get(i); if (obj instanceof Bonus || obj instanceof Malus) { - double dx = obj.getX() - demiCercleAvant.getX(); - double dy = obj.getY() - demiCercleAvant.getY(); - double dist = Math.sqrt(dx * dx + dy * dy); + double itemLargeur = 20.0; + double itemHauteur = 20.0; - if (dist < demiCercleAvant.getRayon()) { + double cercleX = demiCercleAvant.getX(); + double cercleY = demiCercleAvant.getY(); + double cercleRayon = demiCercleAvant.getRayon(); + + + double pointPlusProcheX = Math.max(obj.getX(), Math.min(cercleX, obj.getX() + itemLargeur)); + double pointPlusProcheY = Math.max(obj.getY(), Math.min(cercleY, obj.getY() + itemHauteur)); + + double distanceX = cercleX - pointPlusProcheX; + double distanceY = cercleY - pointPlusProcheY; + double distanceAuCarre = (distanceX * distanceX) + (distanceY * distanceY); + + if (distanceAuCarre < (cercleRayon * cercleRayon)) { if (obj instanceof Bonus) { double newRayon = demiCercleAvant.getRayon() + 3; demiCercleAvant.setRayon(newRayon);