Programmation Python/Turtle

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Consultez également ces pages dans d’autres projets Wikimedia :

Article encyclopédique sur Wikipédia.
Définition sur Wiktionnaire.


Turtle est un module graphique du langage de programmation Python. Il est inspiré de la programmation Logo et permet de déplacer une tortue sur l’écran.

Fonctions disponibles[modifier | modifier le wikicode]

Fonctions principales[modifier | modifier le wikicode]

Pour utiliser une fonction il faut inscrire son nom et lui donner une valeur dans les parenthèses.

Les principales fonctions mises à votre disposition dans le module turtle sont les suivantes :

  • reset()

-> Efface l’écran, recentre la tortue et remet les variables à zéro


  • forward(distance)

-> Avance d’une distance donnée

- Type de donnée : pixel


  • backward(distance)

-> Recule d’une distance donnée

- Type de donnée : pixel


  • left(angle)

-> Pivote vers la gauche

- Type de donnée : angle


  • right(angle)

-> Pivote vers la droite

- Type de donnée : angle


  • up()

-> Relève le crayon (pour pouvoir avancer sans dessiner)


  • down()

-> Abaisse le crayon (pour recommencer à dessiner)


  • goto(x, y)

-> Va à l’endroit de coordonnées (x, y)

- Type de donnée : pixel

/!\ Ne pas oublier d'utiliser la fonction up() avant d'utiliser goto() car sinon il tracera le parcours effectué

Autres fonctions[modifier | modifier le wikicode]

  • color(couleur)

-> Détermine la couleur du tracé (noir par défaut)

- Type de donnée : chaîne de caractère

- Couleurs proposées :


> "blue" => Bleu


> "red" => Rouge


> "green" => Vert


> "yellow" => Jaune


> "brown" => Marron


> "black" => Noir


> "white" => Blanc


> "pink" => Rose


> "orange" => Orange


> "purple" => Violet


> "grey" => Gris


  • width(épaisseur)

-> Choisit l’épaisseur du tracé

- Type de donnée : pixel


  • speed(vitesse)

-> Choisit la vitesse à laquelle se déplace le curseur

- Type de donnée : chaîne de caractère

- Vitesses proposées :


> "slowest" => Le plus lent


> "slow" => Lent


> "normal" => Normal


> "fast" => Rapide


> "fastest" => Le plus rapide


  • circle(rayon, angle)

-> Trace un cercle de rayon donné. L’argument facultatif angle indique l’angle de l’arc de cercle (par défaut 360, soit un cercle complet)

- Type de donnée :

° rayon : pixel

° angle : angle


  • title(titre)

-> Donne un titre à la fenêtre (par défaut le titre est Turtle Graphics)

- Type de donnée : chaîne de caractère


  • write(texte)

-> Écrit du texte

- Type de donnée : chaîne de caractère


  • fill(1)

-> Remplit un contour fermé à l’aide de la couleur sélectionnée

Détails des fonctions[modifier | modifier le wikicode]

color()[modifier | modifier le wikicode]

La couleur peut être :

  • une couleur prédéfinie précisé entre apostrophes droites (exemples : 'red', 'yellow', 'green', 'blue', 'brown', 'violet', 'purple', etc.)
  • une couleur RVB avec trois variables r, v, et b comprises entre 0 et 1 (exemple : 1,0,0 pour le rouge)

Fill[modifier | modifier le wikicode]

Le remplissage peut se faire de deux manières. Par exemple pour remplir un carré :

begin_fill()
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
end_fill()
fill(1)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
fill(0)

Exemples[modifier | modifier le wikicode]

Compléments[modifier | modifier le wikicode]

  • Le module turtle s'appuie sur le module tkinter (Tkinter pour les versions de python antérieures à 3), ça permet d'en utiliser les fonctionnalités. Par exemple pour enregistrer sa production au format postscript :
import turtle

#......
#.......

turtle.getcanvas().postscript(file="monoeuvre.eps")


  • Le module turtle permet de manipuler plusieurs tortues.
fred = turtle.Turtle()
martha = turtle.Turtle()

fred.forward(100)
martha.left(45)


Si les méthodes associées aux tortues sont utilisées sans référence à une tortue particulière, elles s'appliquent à une tortue "anonyme" qui est automatiquement créée si nécessaire.

Si aucune fenêtre d'affichage n'existe et qu'on agit sur une tortue, une fenêtre est automatiquement créée et affichée.

Ces automatismes peuvent paraître pratiques mais peuvent aussi être source de confusion. Il vaut mieux les expliciter (subjectif).

scene = turtle.Screen()

scene.setup(width=0.5, height=1.0, startx=-1, starty=0)  
# width vraie dimension si entier, proportion de l'écran si décimal
# startx entier, position par rapport à la gauche de l'écran si positif, par rapport à la droite si négatif


Exemples[modifier | modifier le wikicode]

Tracer une spirale quelconque[modifier | modifier le wikicode]

from turtle import *
angle = 5
distance = 10
compteur = 0

while compteur <= 30:
    forward(distance)
    left(angle)
    compteur += 1
    angle += 2

Mais aussi de manière plus simple:

from turtle import *
speed("fastest")           #Pour l'aider a aller plus vite
rayon = 1                  #Le premier rayon par défaut
rayonSpiral = 100
while(rayon < rayonSpiral): 
    circle(rayon, 180)
    rayon += 2             #écartement entre 2 demi-cercle de la spirale

Tracer une lanterne[modifier | modifier le wikicode]

from turtle import *
import math

def lanterne(l = 100):
   left(90)
   forward(l)
   right(90)
   forward(l)
   right(90)
   forward(l)
   right(90)
   forward(l)
   right(135)
   forward(l * math.sqrt(2))
   left(90)
   fillcolor("red")
   fill(True)
   forward(l * math.sqrt(2) / 2)
   left(90)
   forward(l * math.sqrt(2) / 2)
   fill(False)
   left(90)
   forward(l * math.sqrt(2))
   right(45)

lanterne(l = 100)

ht()
exitonclick()

Un peu de détente avec le module turtle[modifier | modifier le wikicode]

Comme nous venons de le voir, l'une des grandes qualités de Python est qu'il est extrêmement facile de lui ajouter de nombreuses fonctionnalités par importation de divers modules.

Pour illustrer cela, et nous amuser un peu avec d'autres objets que des nombres, nous allons explorer un module Python qui permet de réaliser des « graphiques tortue », c'est-à-dire des dessins géométriques correspondant à la piste laissée derrière elle par une petite « tortue » virtuelle, dont nous contrôlons les déplacements sur l'écran de l'ordinateur à l'aide d'instructions simples.

Activer cette tortue est un vrai jeu d'enfant. Plutôt que de vous donner de longues explications, nous vous invitons à essayer tout de suite :

>>> from turtle import *
>>> forward(120)
>>> left(90)
>>> color('red')
>>> forward(80)

L'exercice est évidemment plus riche si l'on utilise des boucles :

>>> reset()
>>> a = 0
>>> while a <12:
                a = a +1
                forward(150)
                left(150)
Apprendre à programmer avec Python 8.png

Attention cependant : avant de lancer un tel script, assurez-vous toujours qu'il ne comporte pas de boucle sans fin, car si c'est le cas vous risquez de ne plus pouvoir reprendre le contrôle des opérations (en cas de boucle infinie, pressez CTRL + C, ou alors arrêter Python dans le gestionnaire de tâches sous Windows ou le moniteur d'activité sur Mac et Linux).

Amusez-vous à écrire des scripts qui réalisent des dessins suivant un modèle imposé à l'avance. Les principales fonctions mises à votre disposition dans le module turtle sont les suivantes :

reset() On efface tout et on recommence
goto(x, y) Aller à l'endroit de coordonnées x, y
forward(distance) Avancer d'une distance donnée
backward(distance) Reculer
up() Relever le crayon (pour pouvoir avancer sans dessiner)
down() Abaisser le crayon(pour recommencer à dessiner)
color(couleur) <couleur> peut être une chaîne prédéfinie ('red', 'blue', 'green', etc.)
left(angle) Tourner à gauche d'un angle donné (exprimé en degrés)
right(angle) Tourner à droite
width(épaisseur) Choisir l'épaisseur du tracé
fill(1) Remplir un contour fermé à l'aide de la couleur sélectionnée
write(texte) <texte> doit être une chaîne de caractères délimitée avec des " ou des '