Initiation au module Turtle

Décourvrir le module Turtle de Python

turtle est un module du langage Python qui permet de réaliser des graphiques correspondant à la trace laissée par une tortue (virtuelle) sur l’écran.

Le module permet de donner des instructions à la tortue.

Je vous propose d’explorer quelques possibilités du module à l’aide d’exemples.

Avancer - Tourner

import turtle

# initialisation de la tortue et de la fenêtre
t = turtle.Turtle()
myWin = turtle.Screen()
myWin.setup(800, 600)

# on commence à dessiner

t.forward(100)
t.left(60)
t.forward(50)
t.right(120)
t.forward(25)

# on attend le clic de la souris pour fermer la fenêtre
myWin.exitonclick()

Cet exemple n’est pas très joli, mais nous indique deux instructions :

  • forward(longueur) qui indique à la tortue d’avancer d’un certain nombre de pixels
  • left(angle) qui demande à la tortue de tourner d’un angle en degré vers la gauche (sens anti-horaire)
  • right(angle) qui demande à la tortue de tourner d’un angle en degré vers la droite (sens horaire)

Vitesse - couleur - épaisseur

  • On peut ralentir la tortue avec l’instruction speed(vitesse) où la vitesse va de 1 à 10. Attention, une vitesse de 0 signifie la vitesse maximum (qui dépend de la machine, du système d’exploitation …).
  • On peut aussi changer la couleur grâce à la fonction color(couleur) qui prend comme paramètre une chaine de caractères parmi : “blue”, “red”, “green”, “yellow”, “brown”, “black”, “white”, “pink”, “orange”, “purple”, “grey”
  • L’épaisseur du trait est modifié par l’instruction width(épaisseur)
import turtle

# initialisation de la tortue et de la fenêtre
t = turtle.Turtle()
myWin = turtle.Screen()
myWin.setup(800, 600)

t.speed(1)
t.width(4)
# on commence à dessiner

t.forward(100)
t.left(60)
t.color("green")
t.forward(50)
t.right(120)
t.color("blue")
t.forward(25)

# on attend le clic de la souris pour fermer la fenêtre
myWin.exitonclick()

Un petit exercice

Reproduisez la figure ci-dessous :

Une solution

Vous remarquerez l’instruction hideturtle() qui permet de cacher la tortue (la flèche). Son contraire est showturtle()

Solution améliorée en utilisant les boucles :

Un autre exercice

Reproduisez la figure ci dessous.

Vous pouvez utiliser l’instruction up() qui permet de “lever le crayon”, c’est à dire qu’après cette instruction, la tortue bouge sans laisser de trace, et ce jusqu’à l’appel de la fonction down().

À partir de maintenant nous ne mettons que la partie du code qui concerne directement le dessin.

Proposition de solution :

Cercles - Spirale

Pour tracer un arc de cercle on peut utiliser l’instruction circle(rayon, angle).

On peut s’en servir pour tracer une spirale :

rayon = 1
rayon_fin = 100
while(rayon < rayon_fin): 
    t.circle(rayon, 180)
    rayon += 4

Précisons que le module Turtle peut manipuler plusieurs tortues :

import turtle

# initialisation de la tortue et de la fenêtre
t1 = turtle.Turtle()
t2 = turtle.Turtle()
myWin = turtle.Screen()
myWin.setup(800, 600)

rayon1 = 1
rayon2 = 3
rayon_fin = 100
t1.up()
t1.backward(150)
t1.down()

while(rayon2 < rayon_fin): 
    t1.circle(rayon1, 180)
    t2.circle(rayon2, 180)
    rayon1 += 4 
    rayon2 += 4        

t1.hideturtle()
t2.hideturtle()

# on attend le clic de la souris pour fermer la fenêtre
myWin.exitonclick()

Vous remarquerez l’utilisation de l’instruction backward() dont je vous laisse deviner l’utilité.

Fonctions raccourcies

Les fonctions que nous venons de voir ont presque toutes un raccourci.

instruction complète raccourci
forward() fd()
backward() bk()
left() lt()
right() rt()

TP : Le Flocon de Von Koch

Visionnez la vidéo suivante :

Réalisez un programme dessinant le flocon de Von Koch à un niveau donné.

Votre programme contiendra une fonction koch(t, niveau, taille) qui dessine un côté du flocon (sur un côté du triangle équilatéral) où :

  • t est la tortue
  • niveau le niveau auquel le flocon doit être dessiné
  • taille la longueur d’un côté du triangle équilatéral.

Cette fonction sera recursive (refléchissez bien à l’algorithme et à la conditon d’arrêt).

Facultatif, pour votre culture mathématique :

Si la notion de fractale vous intéresse, vous pouvez visionner cette vidéo : Les fractales