From 7a02cb48d3b685d3b4bdadd89b7213a90a88fa9c Mon Sep 17 00:00:00 2001
From: Lucas Philippe <lucasphilippe@MacBook-Air-de-Lucas.local>
Date: Thu, 18 Jan 2024 10:51:42 +0100
Subject: [PATCH] Correction de la Q5 (fonctionnel)

---
 TP1/BubbleCursor.py | 34 +++++++++++++++-------------------
 TP1/BubbleWidget.py |  2 --
 TP1/MainBubble.py   |  3 ---
 TP1/Target.py       | 16 ++++++++++------
 4 files changed, 25 insertions(+), 30 deletions(-)

diff --git a/TP1/BubbleCursor.py b/TP1/BubbleCursor.py
index 828aa6e..8e4e261 100644
--- a/TP1/BubbleCursor.py
+++ b/TP1/BubbleCursor.py
@@ -1,7 +1,7 @@
 from PyQt5.QtGui import QColor
 
 class BubbleCursor:
-    defaultCol=QColor("green")
+    defaultCol=QColor("blue")
 
     def __init__(self, targets):
         self.x = 0
@@ -9,30 +9,26 @@ class BubbleCursor:
         self.size = 50
         self.targets = targets
         self.closest = None
-
     def paint(self, painter):
         painter.setBrush(self.defaultCol)
-        painter.drawEllipse(self.x - self.size, self.y - self.size, self.size * 2, self.size * 2)
-
-    def move(self, moveX, moveY):
-        self.x = moveX
-        self.y = moveY
-        self.closest = None
-        minDistance = float('inf')
+        painter.drawEllipse(int(self.x - self.size), int(self.y - self.size), int(self.size * 2), int(self.size * 2))
 
-        for target in self.targets:
-            target.highlighted = False
+    def move(self, x, y):
+        self.x = x
+        self.y = y
+        min_distance = float("inf") # variable valeur infini pour démarrer la recherche de min
+        previous_closest = self.closest
 
         for target in self.targets:
-            distance = self.distanceToTarget(target)
-            if distance < minDistance:
-                minDistance = distance
+            distance = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5  # cf. Theoreme de Pythagore
+            distance = distance - target.size/2 # Prendre la distance avec le contour du cercle et pas le centre
+            if distance < min_distance:
+                min_distance = distance
                 self.closest = target
+            self.size = min_distance
 
-        if self.closest is not None:
+        if previous_closest != self.closest:
+            if previous_closest:
+                previous_closest.highlighted = False
             self.closest.highlighted = True
-            self.size = minDistance - self.closest.size / 2
 
-    def distanceToTarget(self, target):
-        distanceCentre = ((self.x - target.x) ** 2 + (self.y - target.y) ** 2) ** 0.5
-        return abs(distanceCentre - target.size / 2)
diff --git a/TP1/BubbleWidget.py b/TP1/BubbleWidget.py
index 476d98d..8a47450 100644
--- a/TP1/BubbleWidget.py
+++ b/TP1/BubbleWidget.py
@@ -21,13 +21,11 @@ class BubbleWidget(QWidget):
                     self.targets.append(Target(x,y,size))
 
     def paintEvent(self, event):
-        print("paintEvent appelé")
         painter = QPainter(self)
         for target in self.targets:
             target.paint(painter)
         self.cursor.paint(painter)
 
     def mouseMoveEvent(self, event):
-        print("mouseMoveEvent appelé")
         self.cursor.move(event.x(), event.y())
         self.update()
diff --git a/TP1/MainBubble.py b/TP1/MainBubble.py
index f70217a..22990ba 100644
--- a/TP1/MainBubble.py
+++ b/TP1/MainBubble.py
@@ -7,11 +7,8 @@ def main():
     app = QApplication(sys.argv)
     main_window = QMainWindow()
     main_window.resize(1024, 800)
-
     bubble_widget = BubbleWidget()
-
     main_window.setCentralWidget(bubble_widget)
-
     main_window.show()
     sys.exit(app.exec_())
 
diff --git a/TP1/Target.py b/TP1/Target.py
index 78cf43c..52f415b 100644
--- a/TP1/Target.py
+++ b/TP1/Target.py
@@ -1,4 +1,5 @@
-from PyQt5.QtGui import QColor
+from PyQt5.QtGui import QColor, QBrush, QPen
+
 
 class Target:
     defaultCol = QColor("green")
@@ -13,10 +14,13 @@ class Target:
         self.highlighted = False
 
     def paint(self, painter):
+        color = self.defaultCol
+
         if self.toSelect:
-            painter.setBrush(self.toSelectCol)
+            color = self.toSelectCol
         elif self.highlighted:
-            painter.setBrush(self.highlightCol)
-        else:
-            painter.setBrush(self.defaultCol)
-        painter.drawEllipse(self.x - self.size / 2, self.y - self.size / 2, self.size, self.size)
\ No newline at end of file
+            color = self.highlightCol
+
+        painter.setBrush(QBrush(color))
+        painter.setPen(QPen(color))
+        painter.drawEllipse(int(self.x - self.size / 2), int(self.y - self.size / 2), int(self.size), int(self.size))
-- 
GitLab