La tortue
Le module turtle est écrit sur le principe de la "tortue logo"
(la tortue logo date des années 1970).
Vous trouverez sur internet de nombreux logiciels reprenant cette idée de la tortue logo dans le but souvent
d'enseigner l'algorithmique et/ou la géométrie élémentaire à de jeunes enfants.
L'intérêt d'utiliser ici ce module : pouvoir profiter d'instructions simples de tracés de figures. On peut
ainsi concevoir et tester quelques algorithmes de représentations de figures, qui ne sont pas nécessairement simples.
Prise en main.
Découvrez les instructions du module à l'aide de la documentation python , et des exemples ici (interactif) .
Un premier exemple
Une fonction pour représenter un rectangle de côtés parallèles aux bords de l'écran.
from turtle import *
def rectangle(cbg, chd, couleur) :
""" cbg=(x,y) (coin bas gauche)
et chd=(x',y') (coin haut droit)
sont deux couples de nombres,
coordonnées de sommets opposés
du rectangle."""
pencolor(couleur) # crayon de couleur
penup() # on lève le crayon
# permet de ne pas tracer lors des déplacements
setposition(cbg[0],cbg[1]) # la tortue va au point de coordonnées (cbg[0],cbg[1])
# c'est à dire au coin inférieur gauche
pendown() # baisse crayon pour tracer
setposition(chd[0],cbg[1]) # la tortue va au coin inférieur droit
setposition(chd[0],chd[1]) # la tortue va au coin supérieur droit
setposition(cbg[0],chd[1]) # la tortue va au coin supérieur gauche
setposition(cbg[0],cbg[1]) # la tortue va au coin inférieur gauche
setworldcoordinates(-1,-1,12,12) # pour ouvrir une fenêtre
# coin inférieur droit (-1,-1)
# coin supérieur gauche (12,12)
rectangle((0,0),(10,10),'red')
rectangle((1,1),(9,8),'blue')
rectangle((2,3),(7,5),'green')
mainloop() # pour maintenir fenêtre ouverte
Le résultat est le suivant :
Nous avons utilisé des "déplacements absolus" dans la version précédente en indiquant à chaque fois les coordonnées du point "à rejoindre".
Les déplacements peuvent être relatifs : on demande à la tortue de commencer par s'orienter dans la direction du prochain segment à tracer puis on lui demande de parcourir une certaine longueur.
Exemple pour tracer à nouveau des rectangles de côtés parallèles aux bords :
from turtle import *
def rectangle(cbg, largeur, hauteur, couleur) :
""" cbg=(x,y) (coin bas gauche)
largeur : longueur du côté horizontal,
hauteur : longueur du côté vertical,
couleur : couleur du tracé."""
pencolor(couleur) # crayon de couleur
penup() # on lève le crayon
# permet de ne pas tracer lors des déplacements
setposition(cbg[0],cbg[1]) # la tortue va en (cbg[0],cbg[1])
setheading(0) # la tortue regarde vers la droite
pendown() # baisse crayon pour tracer
forward(largeur) # la tortue trace le côté horizontal bas
left(90) # la tortue regarde maintenant vers le haut (elle fait un quart de tour, sens trigo)
forward(hauteur) # la tortue trace le côté vertical droit
left(90) # la tortue regarde maintenant vers la gauche
forward(largeur) # la tortue trace le côté horizontal haut
left(90) # la tortue regarde maintenant vers le bas
forward(hauteur) # la tortue trace le côté vertical gauche
setworldcoordinates(-2,-2,9,6) # pour ouvrir une fenêtre
# coin inférieur droit (-1,-1)
# coin supérieur gauche (9,6)
rectangle((-1,-1), 8, 5, 'orange')
rectangle((1,2), 3, 3.5, 'blue')
mainloop() # pour maintenir fenêtre ouverte
Le résultat est le suivant :
Un échiquier
On cherche à dessiner un échiquier (une grille) de l lignes sur c colonnes.
from turtle import *
def echiquier(l,c, cbg , u ) :
""" l (type int) : nombre de lignes de l'échiquier.
c (type int) : nombre de colonnes de l'échiquier.
cbg=(x,y) couple des coordonnées du coin inférieur gauche.
u (type int ou float) : longueur de côté d'une case de l'échiquier.
"""
# dessin des bords des lignes de l'échiquier :
setheading(0)
for i in range(l+1) :
penup()
setposition(cbg[0],cbg[1]+i*u)
pendown()
setposition(cbg[0]+c*u,cbg[1]+i*u)
# dessin des bords des colonnes de l'échiquier :
setheading(90)
for i in range(c+1) :
penup()
setposition(cbg[0]+i*u,cbg[1])
pendown()
setposition(cbg[0]+i*u,cbg[1]+l*u)
############ main ################################
l=5
c=7
u=2
setworldcoordinates(-1,-1,c*u+1, l*u+1) # fenêtre du graphique
shape("turtle") # une tortue qui ressemble à une tortue
echiquier(l,c, (0,0), u)
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte