# -*- coding: utf-8 -*-

# *******************************
# gestion de formes géométriques
# *******************************

from turtle import *
from point import Point


class Forme:
    """ Definit des formes geometriques ayant une couleur et un centre """

    def __init__(self, couleur, centre=None):
        """

        :param couleur:
        :param centre:
        """
        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):
        return "Forme de couleur : " + self.coul_ + " et de centre : " + str(self.centre_)

    def setCouleur(self, newcoul):
        """ Mutateur sur la couleur
        :param newcoul:     nouvelle couleur à appliquer à la forme
        :return:            modifie l'attribut couleur
        """
        self.coul_ = newcoul

    def deplace(self, dx, dy):
        """

        :param dx:  deplacement sur l'axe des x
        :param dy:  deplacement sur l'axe des y
        :return:    modifie la position du centre de la forme
        """
        # definition des nouvelles coordonnees du centre
        self.centre_.deplace(dx, dy)

# Programme principal
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)


