TP4 - Turtle
- Découvrir la notion de bibliothèque en Python ;
- Utiliser la bibliothèque Turtle pour dessiner ;
- Mettre en pratique les notions de variable, condition et boucle.
- Dans votre dossier
SNT, ouvrir le dossierT3 - Programmation. - Sur EduPython, créer un nouveau fichier (
CTRL+N) et l'enregistrer sous le nomTP4_Turtle(CTRL+S).
Qu'est-ce qu'une bibliothèque ?
Quand on écrit un programme Python, on n'a pas besoin de tout coder depuis zéro. Des développeurs ont déjà écrit des ensembles de fonctions prêtes à l'emploi, regroupées dans ce qu'on appelle une bibliothèque (ou module).
Pour utiliser une bibliothèque, on l'importe en début de programme avec le mot-clé import :
from turtle import *
Cette ligne indique à Python : « charge toutes les fonctions de la bibliothèque Turtle et mets-les à ma disposition ».
Une bibliothèque Python, c'est comme une boîte à outils : plutôt que de fabriquer soi-même un marteau, on l'attrape directement dans la boîte.
La bibliothèque Turtle
Turtle est une bibliothèque Python qui permet de dessiner en déplaçant un curseur (la « tortue » 🐢) sur un écran.
Le principe est simple : imaginez une tortue qui tient un crayon. Vous lui donnez des ordres — avancer, tourner, lever le crayon — et elle trace le dessin correspondant.
from turtle import *
forward(100) # avance de 100 pixels
right(90) # tourne à droite de 90°
forward(100) # avance de 100 pixels
mainloop() # affiche la fenêtre (toujours à la fin !)
La ligne mainloop() est obligatoire à la fin de chaque programme Turtle. Sans elle, la fenêtre de dessin se ferme immédiatement.
Les fonctions essentielles
| Fonction | Effet |
|---|---|
forward(distance) | Avance le crayon de distance pixels |
backward(distance) | Recule le crayon de distance pixels |
right(angle) | Tourne vers la droite de angle degrés |
left(angle) | Tourne vers la gauche de angle degrés |
up() | Lève le crayon (se déplace sans dessiner) |
down() | Abaisse le crayon (recommence à dessiner) |
pencolor(couleur) | Change la couleur du crayon (en anglais : "red", "blue"…) |
speed(vitesse) | Règle la vitesse de dessin (0 = instantané) |
mainloop() | Affiche et maintient la fenêtre ouverte |
Exemple commenté
Recopier et exécuter le programme suivant pour observer comment la tortue trace une figure :
from turtle import *
# Dessin en vert
pencolor("green")
forward(100)
right(90)
forward(100)
# Déplacement sans dessiner
up()
backward(50)
down()
# Dessin en rouge
pencolor("red")
left(90)
forward(100)
mainloop()
- Que se passe-t-il entre
up()etdown()? - Quel effet a
right(90)sur la direction de la tortue ?
Exercices
Carré
On souhaite dessiner un carré jaune de 100 pixels de côté.
- 1
Écrire un programme qui affiche la couleur du crayon en jaune, puis avance de 100 pixels.
- 2
Ajouter une rotation de 90° vers la droite, puis écrire les instructions pour tracer les 3 côtés restants.
RappelUn carré possède 4 côtés égaux et 4 angles droits (90°).
- 3
Remarquer que certaines lignes du programme se répètent. Réécrire le programme en utilisant une boucle
forpour éviter ces répétitions.Aide — boucle forfor i in range(...,...):
# instructions répétées 4 foisAttention à bien indenter (décaler) les lignes à l'intérieur de la boucle.
Pentagone
Un pentagone est un polygone à 5 côtés. Pour le tracer, la tortue doit avancer puis tourner 5 fois. À chaque sommet, elle tourne de 72° (car 360 / 5 = 72).
- 1
Écrire un programme qui dessine un pentagone rouge de 100 pixels, en écrivant les 5
forwardet les 5rightà la suite. - 2
Comparer ce programme avec celui du carré : que remarque-t-on ? Réécrire le programme en utilisant une boucle
forpour éviter les répétitions.AideLa boucle doit faire 5 tours, et à chaque tour : avancer de 100 puis tourner de 72°.
Polygone régulier
On a dessiné un carré (4 côtés) puis un pentagone (5 côtés) : à chaque fois, seuls le nombre de tours de la boucle et l'angle changeaient. On va généraliser pour dessiner n'importe quel polygone régulier.
Pour un polygone à n côtés, la tortue tourne de 360 / n degrés à chaque sommet.
- Triangle : 360 / 3 = 120°
- Carré : 360 / 4 = 90°
- Pentagone : 360 / 5 = 72°
- Hexagone : 360 / 6 = 60°
- 1
En reprenant la boucle du pentagone, modifier le programme pour dessiner un triangle équilatéral vert de 100 pixels, puis un hexagone orange de 100 pixels. À chaque fois, adapter le nombre de tours et l'angle.
- 2
Créer une variable
nb_coteset l'affecter à la valeur de votre choix. Modifier la boucle pour qu'elle utilisenb_cotes(nombre de tours) et360 / nb_cotes(angle), de façon à n'avoir qu'un seul programme capable de dessiner n'importe quel polygone.
Choix du polygone
On souhaite que l'utilisateur choisisse lui-même le nombre de côtés du polygone à dessiner.
nb_cotes = int(input("Nombre de côtés : "))
Cette instruction affiche un message, attend que l'utilisateur saisisse un entier, et le stocke dans la variable nb_cotes.
- 1
Ajouter une saisie au clavier pour stocker le nombre de côtés dans une variable
nb_cotes. - 2
Modifier la boucle de dessin pour qu'elle tourne
nb_cotesfois (au lieu d'un nombre fixe), et que l'angle soit calculé automatiquement avec la formule360 / nb_cotes. - 3
Un polygone doit avoir au minimum 3 côtés. À l'aide d'une condition
if / else, dessiner le polygone sinb_cotes >= 3, et afficher le message"Nombre de côtés insuffisant !"dans le cas contraire.
Rosace de pentagones
On souhaite dessiner une rosace en répétant plusieurs fois le pentagone de l'exercice 2, en le faisant pivoter légèrement à chaque fois.
L'idée est d'utiliser deux boucles imbriquées :
- La boucle extérieure répète le dessin d'un pentagone plusieurs fois.
- La boucle intérieure (celle de l'exercice 2) trace un pentagone à chaque fois.
Entre chaque pentagone, on fait tourner la tortue d'un certain angle pour créer le décalage.
pour chaque pentagone :
tracer le pentagone ← boucle intérieure
tourner d'un angle de décalage
- 1
Partir du programme de l'exercice 2 (pentagone avec boucle
for). Ajouterspeed(0)en début de programme pour que le dessin soit instantané. - 2
Entourer la boucle du pentagone dans une deuxième boucle qui tourne 6 fois. Cette boucle extérieure doit utiliser une variable différente (par exemple
jpour la boucle intérieure etipour la boucle extérieure, ou l'inverse). - 3
Après la boucle intérieure (mais toujours à l'intérieur de la boucle extérieure), ajouter
right(60)pour faire pivoter la tortue de 60° avant de dessiner le pentagone suivant.Pourquoi 60° ?On dessine 6 pentagones, et 360° / 6 = 60°. En tournant de 60° entre chaque, on fait le tour complet.
- 4
Moduler les valeurs pour dessiner différentes rosaces. Vous pouvez aussi changer la couleur.
Travail de groupe 🌸
Par groupes de 2 ou 3, créer une carte de printemps en utilisant Turtle.
L'objectif est de dessiner une scène avec au minimum : une fleur, de l'herbe et un message. Suivre les étapes ci-dessous pour construire la carte progressivement.
Nouvelles fonctions utiles
Avant de commencer, voici quelques fonctions Turtle supplémentaires dont vous aurez besoin :
| Fonction | Effet |
|---|---|
fillcolor("couleur") | Définit la couleur de remplissage |
begin_fill() | Démarre le remplissage d'une forme |
end_fill() | Termine et applique le remplissage |
circle(rayon) | Dessine un cercle de rayon rayon pixels |
goto(x, y) | Déplace la tortue aux coordonnées (x, y) |
write("texte", font=("Arial", 16, "bold")) | Écrit du texte à la position actuelle |
Pour dessiner un pétale rose rempli, on encadre le dessin entre begin_fill() et end_fill() :
fillcolor("pink")
begin_fill()
circle(30) # dessine le pétale
end_fill()
Consignes
- 1
Créer une scène de printemps comprenant au minimum :
- une ou plusieurs fleurs avec tige et pétales colorés remplis,
- un message de printemps écrit sur la carte,
- un élément de décor supplémentaire au choix (soleil, nuages, papillon, abeille, herbe…).
- 2
La ou les fleurs doivent être dessinées à l'aide d'une boucle
for, en réutilisant le principe de la rosace. - 3
Chaque membre du groupe doit avoir codé au moins un élément de la scène.
- Un soleil :
circle()jaune rempli + rayons avecforward/backward - Un papillon : deux demi-cercles avec
circle(rayon, 180) - Des nuages : plusieurs petits
circle()blancs côte à côte - De l'herbe : une ligne verte en bas de l'écran