# -*- coding: utf-8 -*-
__projet__ = "Chenille animée"
__nom_fichier__ = "forme"
__author__ = "AJ Tinet"
__date__ = "février 2026"


# Import des classes et bibliothèques utiles
from turtle import *
from point import Point

# =============================================================================

# Définition de la classe Forme
class Forme:
    """ Definit des formes geometriques ayant une couleur et un centre """

    def __init__(self, couleur, centre=None):
        """
        Constructeur de la classe Forme.
        ----------------------------------------------------------------------
        :param couleur: Couleur de la forme
        :type couleur: STR
        :param centre: Centre de la forme, defaults to None
        :type centre: Instance de POINT, optional

        """
        self.coul_ = couleur

        # si le centre n'est pas fourni on le positionne par défaut à l'origine
        if centre is None:
            self.centre_ = Point()
        else:
            self.centre_ = centre


    def __repr__(self):
        """
        Surcharge de print
        ----------------------------------------------------------------------
        :return: Description de la forme

        """
        return "Forme de couleur : " + self.coul_ + " et de centre : " + str(self.centre_)


    def setCouleur(self, newcoul):
        """
        Mutateur de la couleur
        ----------------------------------------------------------------------        
        :param newcoul: nouvelle couleur à appliquer à la forme
        :type newcoul: STR

        """
        self.coul_ = newcoul
      
        
    def getCentre(self):
        """
        Accesseur du centre
        ----------------------------------------------------------------------          
        :return: Centre de la forme
        :rtype: Instance de POINT

        """     
        return self.centre_


    def deplace(self, dx, dy):
        """
        Modifie la position de la forme en déplaçant de son centre de (dx, dy)
        ---------------------------------------------------------------------- 
        :param dx: Déplacement sur l'axe des x
        :type dx: INT
        :param dy: Déplacement sur l'axe des y
        :type dy: INT

        """
        # definition des nouvelles coordonnees du centre
        self.centre_.deplace(dx, dy)


# =============================================================================
        
# Programme principal : Test de la classe Forme   
if __name__ == "__main__":
    ctre = Point(0, -20)
    forme = Forme("red", ctre)

    print("forme : ", forme)

    form1 = Forme("red")
    print("forme 1 : ", form1)
    form2 = Forme("yellow")
    print("forme 2 : ", form2)

    print()

    form2.setCouleur("blue")
    print("Forme 2 modifiée : ", form2)

    print()
    form1.deplace(10, 100)
    print("form1 déplacée : ", form1)
    print("forme 2 :", form2)


