From cad426c7da1df85b74ba0e7ec59c2087ddffff68 Mon Sep 17 00:00:00 2001
From: s22029480 <nahlane-ghina.SAYEH@etu.univ-amu.fr>
Date: Fri, 4 Oct 2024 11:47:38 +0200
Subject: [PATCH] modification de ShapeContainer

---
 src/main/java/shape/AbstractShape.java | 30 ++++++++++++++++++++++++++
 src/main/java/shape/Polygon.java       | 29 +++++++++++++++++++++++++
 2 files changed, 59 insertions(+)
 create mode 100644 src/main/java/shape/AbstractShape.java
 create mode 100644 src/main/java/shape/Polygon.java

diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java
new file mode 100644
index 0000000..4fc4062
--- /dev/null
+++ b/src/main/java/shape/AbstractShape.java
@@ -0,0 +1,30 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractShape implements Shape {
+    protected List<Point2D> points = new ArrayList<>();
+
+    // Méthode pour ajouter des points à la forme
+    public void addPoints(Point2D... newPoints) {
+        for (Point2D point : newPoints) {
+            points.add(point);
+        }
+    }
+
+    @Override
+    public int pointsCount() {
+        return points.size();
+    }
+
+    @Override
+    public Point2D point(int index) {
+        return points.get(index);
+    }
+
+    @Override
+    public abstract void draw(GraphicsContext context);  // Méthode abstraite pour dessiner la forme
+}
diff --git a/src/main/java/shape/Polygon.java b/src/main/java/shape/Polygon.java
new file mode 100644
index 0000000..c2b025f
--- /dev/null
+++ b/src/main/java/shape/Polygon.java
@@ -0,0 +1,29 @@
+package shape;
+
+import javafx.geometry.Point2D;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.paint.Color;
+
+public class Polygon extends AbstractShape {
+    private Color color;
+
+    public Polygon(Color color, Point2D... points) {
+        this.color = color;
+        addPoints(points);  // Ajoute les points du polygone
+    }
+
+    @Override
+    public void draw(GraphicsContext context) {
+        context.setFill(color);
+        // Trace les côtés du polygone en reliant les points
+        context.beginPath();
+        Point2D firstPoint = points.get(0);
+        context.moveTo(firstPoint.getX(), firstPoint.getY());
+        for (int i = 1; i < points.size(); i++) {
+            Point2D point = points.get(i);
+            context.lineTo(point.getX(), point.getY());
+        }
+        context.closePath();
+        context.fill();
+    }
+}
-- 
GitLab