# -*- coding:utf-8 -*-
__projet__ = "9 - POO"
__nom_fichier__ = "rectangle.py"
__author__ = "Christine Fay-Varnier"
__date__ = "février 2022"

# Défintion des sous-classes
from turtle import *

from point import Point
from forme import Forme

class Rectangle(Forme):
    """ Definit un rectangle comme un forme + une largeur, une hauteur """

    def __init__(self, larg, haut, couleur, centre=None):
        Forme.__init__(self, couleur, centre)   # creation de la forme
        # spécialisation pour un rectangle
        self.larg_ = larg
        self.haut_ = haut

    def __repr__(self):
        """

        @return:    chaine à afficher pour décrire un rectangle
        """
        ligne1 =  Forme.__str__(self)
        ligne2 = "de largeur : " + self.larg_ + " hauteur : " + self.haut_
        return ligne1 + ligne2

    def calculeSurface(self):
        """

        :return:    la surface du rectangle
        """
        return self.larg_ * self.haut_

    def dessiner(self):
        # methode qui dessine un rectangle avec le module turtle

        # on supprime l'impression de la tortue
        ht()
        # on accélère
        # speed(10)

        up()
        # on se place au debut du trace
        # je fais appel aux accesseurs de la classe Point
        # ainsi mon programme peut fonctionner avec n'importe laquelle des définitions de la classe Point
        goto(self.centre_.getx() - self.larg_ // 2, self.centre_.gety() + self.haut_ // 2)
        color(self.coul_)
        begin_fill()
        down()
        setheading(0)

        # demarrage du dessin
        for i in range(2):
            forward(self.larg_)
            right(90)
            forward(self.haut_)
            right(90)
        end_fill()
        up()

#Programme principal
if __name__ == '__main__':
    ctre = Point(0, -20)
    rect1 = Rectangle(90, 20, "red", ctre)
    print("surface du rectangle : ", rect1.calculeSurface())

    rect2 = Rectangle(45, 5, "yellow", ctre)
    rect1.dessiner()
    rect2.dessiner()

    rect2.setCouleur("green")

    rect1.deplace(50, 20)
    rect1.dessiner()
    rect2.dessiner()    # on observe que les deux rectangles sont déplacés car ils partagent le même centre
    exitonclick()