Skip to content

Dessiner avec la tortue

Tu sais afficher du texte et faire des calculs. Maintenant, on écrit des programmes qui dessinent. Pour cela, on va créer une tortue qui tient un crayon, lui donner un nom, et lui donner des ordres : elle avance, elle tourne, et elle laisse un trait derrière elle.

Cours ici, exercices sur Capytale

Comme d'habitude, cette page est le cours. Les exercices, où tu écris et exécutes le code, sont sur Capytale.

Créer la tortue

Tous nos programmes de dessin ont la même structure : on crée la tortue au début, et on termine par done().

from turtle import Turtle, done

hortense = Turtle()

# ... ici, on donne des ordres à hortense ...

done()
  • from turtle import Turtle, done va chercher, dans la boîte à outils turtle, le modèle de tortue (Turtle) et l'instruction done.
  • hortense = Turtle() crée une tortue et lui donne un nom : hortense. C'est ce nom qu'on emploiera ensuite chaque fois qu'on voudra lui parler.
  • done() se met à la fin : elle affiche le dessin et garde la fenêtre ouverte. Elle agit sur toute la fenêtre, pas sur une tortue en particulier : c'est pour ça qu'on l'appelle seule, sans point ni nom de tortue devant.

Le nom hortense est un choix. Tu peux nommer ta tortue comme tu veux (robert, ninja, zoe…) : c'est toi le maître de ton programme. Ce qui compte, c'est de parler à ta tortue par ce nom ensuite.

Lui donner des ordres

La notation pointée, c'est tout simplement la façon de parler à la tortue : on lui envoie un message. On écrit son nom, un point, puis l'ordre qu'on lui donne.

hortense.forward(100) se lit « hortense, avance de 100 ». À gauche du point, à qui on parle (hortense) ; à droite, le message qu'on lui envoie (avance de 100).

Ordre Effet
hortense.forward(100) avancer de 100 pas, en traçant
hortense.left(90) tourner à gauche de 90 degrés
hortense.right(90) tourner à droite de 90 degrés

Les angles sont en degrés : hortense.left(90) fait un quart de tour.

Un premier programme complet :

from turtle import Turtle, done
hortense = Turtle()
hortense.forward(100)
done()

Il crée la tortue, lui fait tracer un trait de 100 pas, puis done() affiche le dessin.

La tortue a une direction

Contrairement à la grille de la première séance (droite, haut…), hortense ne se déplace pas en absolu : elle avance devant elle et elle tourne. Elle regarde toujours quelque part.

Dessiner un carré

Souviens-toi du carré de la première séance, sur la grille. Avec la tortue, un carré, c'est : avancer, tourner d'un quart de tour, et recommencer quatre fois.

from turtle import Turtle, done
hortense = Turtle()
hortense.forward(100)
hortense.left(90)
hortense.forward(100)
hortense.left(90)
hortense.forward(100)
hortense.left(90)
hortense.forward(100)
hortense.left(90)
done()

Ça fonctionne, mais c'est long et répétitif : huit lignes pour dire quatre fois la même chose.

Répéter avec une boucle

On l'a vu dans le langage de tracé : quand ça se répète, on l'écrit une seule fois. En Python, c'est la boucle for :

from turtle import Turtle, done
hortense = Turtle()
for _ in range(4):
    hortense.forward(100)
    hortense.left(90)
done()

for _ in range(4): veut dire exactement « répète 4 fois ». Les instructions indentées en dessous forment le bloc répété, comme le bloc indenté après répète 4 fois : de la première séance. Ce programme dessine le même carré.

Pour l'instant, for _ in range(n) = « répéter n fois »

Le _ signifie juste qu'on n'a pas besoin de retenir un numéro de tour. À ce stade, for _ in range(4):, c'est « répète 4 fois », un point c'est tout. Ne te pose pas d'autre question là-dessus pour le moment.

L'indentation, encore

Comme dans le langage de tracé, le décalage vers la droite indique ce qui est répété. Ce qui n'est pas indenté n'est pas dans la boucle.

Ce qu'on retient

  • Tout programme crée une tortue au début et se termine par done() (qui affiche le dessin). On donne un nom à la tortue (celui qu'on veut) et on lui donne des ordres avec un point (hortense.forward(100)).
  • La tortue avance (forward) et tourne (left, right) : elle a une direction.
  • Une boucle for répète un bloc indenté : for _ in range(4): veut dire « répète 4 fois ».
  • Le cours est ici ; on s'entraîne sur Capytale.