From ef888311de793b2d9b105918714cb931bd134659 Mon Sep 17 00:00:00 2001
From: Lucas Philippe <lucasphilippe@MacBook-Air-de-Lucas.local>
Date: Thu, 18 Jan 2024 11:53:00 +0100
Subject: [PATCH] Etape 8 fonctionnelle

---
 TP1/BubbleWidget.py |  4 ++--
 TP1/MainRope.py     | 14 +++++++++++++
 TP1/RopeCursor.py   |  7 +++++++
 TP1/RopeWidget.py   | 49 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 72 insertions(+), 2 deletions(-)
 create mode 100644 TP1/MainRope.py
 create mode 100644 TP1/RopeCursor.py
 create mode 100644 TP1/RopeWidget.py

diff --git a/TP1/BubbleWidget.py b/TP1/BubbleWidget.py
index 1f1c20d..4b20faf 100644
--- a/TP1/BubbleWidget.py
+++ b/TP1/BubbleWidget.py
@@ -24,9 +24,9 @@ class BubbleWidget(QWidget):
 
     def paintEvent(self, event):
         painter = QPainter(self)
+        self.cursor.paint(painter)
         for target in self.targets:
             target.paint(painter)
-        self.cursor.paint(painter)
 
     def mouseMoveEvent(self, event):
         self.cursor.move(event.x(), event.y())
@@ -46,4 +46,4 @@ class BubbleWidget(QWidget):
     def mousePressEvent(self, event):
         if self.cursor.closest.click_cible():
             self.printTime()
-            self.selectRandomTarget()
+            self.selectRandomTarget()
\ No newline at end of file
diff --git a/TP1/MainRope.py b/TP1/MainRope.py
new file mode 100644
index 0000000..e9519fb
--- /dev/null
+++ b/TP1/MainRope.py
@@ -0,0 +1,14 @@
+from PyQt5.QtWidgets import QApplication, QMainWindow
+from RopeWidget import RopeWidget
+def main():
+    app = QApplication([])
+    window = QMainWindow()
+    window.resize(1024, 800)
+    bubble_widget = RopeWidget()
+    window.setCentralWidget(bubble_widget)
+    window.show()
+    app.exec_()
+
+
+if __name__ == "__main__":
+    main()
diff --git a/TP1/RopeCursor.py b/TP1/RopeCursor.py
new file mode 100644
index 0000000..5ed739c
--- /dev/null
+++ b/TP1/RopeCursor.py
@@ -0,0 +1,7 @@
+from BubbleCursor import BubbleCursor
+
+class RopeCursor(BubbleCursor):
+    def paint(self, painter):
+        if self.closest is not None:
+            painter.setBrush(self.defaultCol)
+            painter.drawLine(self.x, self.y, self.closest.x, self.closest.y)
diff --git a/TP1/RopeWidget.py b/TP1/RopeWidget.py
new file mode 100644
index 0000000..2aafc7a
--- /dev/null
+++ b/TP1/RopeWidget.py
@@ -0,0 +1,49 @@
+import csv, random, time
+from PyQt5.QtGui import QPainter
+from PyQt5.QtWidgets import QWidget
+from Target import Target
+from RopeCursor import RopeCursor
+
+class RopeWidget(QWidget):
+    def __init__(self):
+        super().__init__()
+        self.targets = []
+        self.loadTargets()
+        self.cursor = RopeCursor(self.targets)
+        self.setMouseTracking(True)
+        self.start_time = None
+        self.selectRandomTarget()
+
+    def loadTargets(self):
+        with open('src_tp_bubble.csv', newline='') as csvfile:
+            reader = csv.reader(csvfile)
+            for row in reader:
+                if len(row) >= 3:
+                    x, y, size = map(int, row[:3])
+                    self.targets.append(Target(x,y,size))
+
+    def paintEvent(self, event):
+        painter = QPainter(self)
+        self.cursor.paint(painter)
+        for target in self.targets:
+            target.paint(painter)
+
+    def mouseMoveEvent(self, event):
+        self.cursor.move(event.x(), event.y())
+        self.update()
+
+    def selectRandomTarget(self):
+        if self.start_time == None:
+            self.start_time = time.time()
+        target = random.choice(self.targets)
+        target.toSelect = True
+        self.update()
+
+    def printTime(self):
+        print((time.time() - self.start_time)*1000)
+        self.start_time = None
+
+    def mousePressEvent(self, event):
+        if self.cursor.closest.click_cible():
+            self.printTime()
+            self.selectRandomTarget()
-- 
GitLab