Skip to content

TP3. Tortue Logo

Énoncé

Dans ce premier TP, on se propose d’écrire un programme simulant un mini Logo. Logo 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.

logo de Logo

La tortue obéit à différentes commandes mais nous ne considérerons dans ce TP que les commandes suivantes :

  • avance
  • tourne_droite
  • tourne_gauche
  • leve_crayon
  • baisse_crayon

Votre travail consiste à implémenter toutes les fonctions du module logo.py dont le squelette vous est fourni ici et affiché ci dessous :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
"""Module tortue logo.

Ce module implémente les primitives graphiques basiques
d'une tortue logo.
"""

from collections import namedtuple
import svg

TortueLogo = namedtuple("TortueLogo", "point direction crayon_en_bas")

def init():
    """Renvoie une nouvelle Tortue à l'origine.

    Initialement la tortue regarde vers le haut.
    """
    # TODO
    ...

def avance(tortue, distance):
    """Renvoie une nouvelle tortue ayant avancé tout droit.

    La tortue avance tout droit de la distance donnée et affiche le
    segment SVG correspondant si le crayon de la tortue est en bas.
    """
    # TODO
    ...

def tourne_droite(tortue, angle):
    """
    Renvoie une nouvelle tortue ayant changé de direction.

    La tortue change de direction en tournant à droite de l'angle
    donné (en degrés)
    """
    # TODO
    ...

def tourne_gauche(tortue, angle):
    """Renvoie une nouvelle tortue ayant changé de direction.

    La tortue change de direction en tournant à gauche de l'angle
    donné (en degrés)
    """
    # TODO
    ...

def baisse_crayon(tortue):
    """Renvoie une nouvelle tortue ayant baissé le crayon."""
    # TODO
    ...

def leve_crayon(tortue):
    """Renvoie une nouvelle tortue ayant levé le crayon."""
    # TODO
    ...

Nous vous fournissons le programme principal test_logo.py qui n’est pas à modifier et qui vous permettra de tester votre module logo.py.

Pour dessiner des segments dans votre module logo.py, vous utiliserez la fonction suivante que vous devez rajouter à votre module svg.py :

1
2
3
4
5
6
7
def genere_segment(dep, arr):
    """
    Retourne la chaîne de caractères correspondant à un
    ségment SVG. Ce segment relie les points dep et arr.
    """
    # TODO
    ...

Il est assez facile de se tromper dans les calculs pour ce TP, n’hésitez pas à interpeller votre enseignant pour qu’il vous explique comment déboguer votre programme.

Difficulté

star star star star star

Exercices associés