Aller au contenu principal

TP4 - Turtle

Objectifs
  1. Découvrir la notion de bibliothèque en Python ;
  2. Utiliser la bibliothèque Turtle pour dessiner ;
  3. Mettre en pratique les notions de variable, condition et boucle.
Avant de commencer
  1. Dans votre dossier SNT, ouvrir le dossier T3 - Programmation.
  2. Sur EduPython, créer un nouveau fichier (CTRL+N) et l'enregistrer sous le nom TP4_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 ».

Analogie

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 !)
Important

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

FonctionEffet
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()
À observer
  • Que se passe-t-il entre up() et down() ?
  • 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é.

✏️Exercices
  1. 1

    Écrire un programme qui affiche la couleur du crayon en jaune, puis avance de 100 pixels.

  2. 2

    Ajouter une rotation de 90° vers la droite, puis écrire les instructions pour tracer les 3 côtés restants.

    Rappel

    Un carré possède 4 côtés égaux et 4 angles droits (90°).

  3. 3

    Remarquer que certaines lignes du programme se répètent. Réécrire le programme en utilisant une boucle for pour éviter ces répétitions.

    Aide — boucle for
    for i in range(...,...):
    # instructions répétées 4 fois

    Attention à 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).

✏️Exercices
  1. 1

    Écrire un programme qui dessine un pentagone rouge de 100 pixels, en écrivant les 5 forward et les 5 right à la suite.

  2. 2

    Comparer ce programme avec celui du carré : que remarque-t-on ? Réécrire le programme en utilisant une boucle for pour éviter les répétitions.

    Aide

    La 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.

Formule de l'angle

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°
✏️Exercices
  1. 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. 2

    Créer une variable nb_cotes et l'affecter à la valeur de votre choix. Modifier la boucle pour qu'elle utilise nb_cotes (nombre de tours) et 360 / 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.

Rappel — saisie au clavier
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.

✏️Exercices
  1. 1

    Ajouter une saisie au clavier pour stocker le nombre de côtés dans une variable nb_cotes.

  2. 2

    Modifier la boucle de dessin pour qu'elle tourne nb_cotes fois (au lieu d'un nombre fixe), et que l'angle soit calculé automatiquement avec la formule 360 / nb_cotes.

  3. 3

    Un polygone doit avoir au minimum 3 côtés. À l'aide d'une condition if / else, dessiner le polygone si nb_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.

Principe

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
✏️Exercices
  1. 1

    Partir du programme de l'exercice 2 (pentagone avec boucle for). Ajouter speed(0) en début de programme pour que le dessin soit instantané.

  2. 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 j pour la boucle intérieure et i pour la boucle extérieure, ou l'inverse).

  3. 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. 4

    Moduler les valeurs pour dessiner différentes rosaces. Vous pouvez aussi changer la couleur.


Travail de groupe 🌸

Projet — Carte de printemps

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 :

FonctionEffet
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
Remplir une forme

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

✏️Exercices
  1. 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. 2

    La ou les fleurs doivent être dessinées à l'aide d'une boucle for, en réutilisant le principe de la rosace.

  3. 3

    Chaque membre du groupe doit avoir codé au moins un élément de la scène.

Idées d'éléments
  • Un soleil : circle() jaune rempli + rayons avec forward/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