diff --git a/src/main/java/shape/AbstractShape.java b/src/main/java/shape/AbstractShape.java new file mode 100644 index 0000000000000000000000000000000000000000..4fc406258e4ac71a261c564d098130e571d5677d --- /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 0000000000000000000000000000000000000000..c2b025f35393bd678f6a821ba8e93597fc38aed7 --- /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(); + } +}