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, doneva chercher, dans la boîte à outilsturtle, le modèle de tortue (Turtle) et l'instructiondone.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 :
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
forré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.