1.5 Logo

On se propose d’écrire un programme simulant un mini Logo.

PIC

Logo (http://fr.wikipedia.org/wiki/Logo_%28langage%29) est un langage de programmation vous permettant de contrôler une petite tortue représentant la pointe d’un crayon, dessinant une image lors de ses déplacements.

La tortue obéit à différentes commandes mais nous ne considérerons dans ce TP que les commandes avance, tourne_droite, tourne_gauche, leve_crayon et baisse_crayon.

Nous vous fournissons un fichier principal qui n’est pas à modifier et vous permettra de tester votre paquetage Logo.

 
#!/usr/bin/env python3 
""" 
dessin : logo 
""" 
 
from logo import Logo 
 
 
def main(): 
    """ 
    on cree un dessin a laide de lobjet logo. 
    """ 
    tortue = Logo() 
    tortue.leve_crayon() 
    tortue.tourne_droite(180.0) 
    tortue.avance(50.0) 
    tortue.tourne_gauche(90.0) 
    tortue.avance(50.0) 
    tortue.tourne_gauche(90.0) 
    tortue.baisse_crayon() 
 
    tortue.avance(20.0) 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
 
    tortue.leve_crayon() 
    tortue.avance(20.0) 
    tortue.baisse_crayon() 
 
    tortue.avance(20.0) 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
 
    tortue.leve_crayon() 
    tortue.tourne_droite(90.0) 
    tortue.avance(20.0) 
    tortue.tourne_gauche(90.0) 
    tortue.avance(10.0) 
    tortue.baisse_crayon() 
 
    tortue.tourne_gauche(45.0) 
    tortue.avance(30.0) 
    tortue.tourne_gauche(45.0) 
    tortue.avance(30.0) 
    tortue.tourne_gauche(45.0) 
    tortue.avance(30.0) 
 
main()

fichier principal

Il vous est demandé de remplir toutes les méthodes de la classe Logo du fichier logo.py.

 
""" 
le module implemente les primitives graphiques basiques 
dune tortue logo. 
""" 
 
 
class Logo: 
    """ 
    une tortue logo, positionnee dans le plan. 
    """ 
    def __init__(self): 
        """ 
        positionne la tortue a lorigine, demarre le svg 
        """ 
        self.abscisse = 0.0 
        self.ordonnee = 0.0 
        self.direction = 270.0  # angle du regard de la tortue (en degre) 
        self.crayon_en_bas = False 
        # en tete du fichier svg 
        print("<svgwidth=\"100\"height=\"100\">") 
 
    def avance(self, distance): 
        """ 
        avance la tortue tout droit de la distance donnee 
        """ 
        pass 
 
    def tourne_droite(self, angle): 
        """ 
        change la direction de la tortue en tournant a droite 
        de langle donne (en degre) 
        """ 
        pass 
 
    def tourne_gauche(self, angle): 
        """ 
        change la direction de la tortue en tournant a gauche 
        de langle donne (en degre) 
        """ 
        pass 
 
    def baisse_crayon(self): 
        """ 
        baisse le crayon. a partir de maintenant la tortue dessine 
        lorsquelle avance 
        """ 
        pass 
 
    def leve_crayon(self): 
        """ 
        leve le crayon. a partir de maintenant la tortue ne dessine pas 
        lorsquelle avance. 
        """ 
        pass 
 
    def __del__(self): 
        """ 
        destructeur, termine le fichier svg 
        """ 
        pass

classe Logo

Il est assez facile de se tromper. N’hésitez pas à interpeller votre enseignant pour qu’il vous explique comment déboguer votre programme.

Solution  :