Vidéo 11 : Turtle : quelques commandes

\(\newcommand{\ds}{\displaystyle}\) \(\newcommand{\Frac}{\ds\frac}\) \(\renewcommand{\r}{\mathbb{ R}}\) \(\newcommand{\C}{\mathbb{ C}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\z}{\mathbb{ Z}}\) \(\newcommand{\Q}{\mathbb{ Q}}\) \(\newcommand{\N}{\mathbb{ N}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\ol}{\overline}\) \(\newcommand{\abs}[1]{\left| \,{#1} \right|}\) \(\newcommand{\pv}{\;;\;}\) \(\newcommand{\ens}[1]{\left\{ {#1} \right\}}\) \(\newcommand{\mens}[1]{\setminus\left\{ {#1} \right\}}\) \(\newcommand{\Par}[1]{\left({#1}\right)}\)

Vidéo 11 : Turtle : quelques commandes

Déplacement et tracé de la tortue

Un dessin Turtle est le résultat de la trace du déplacement d’une tortue virtuelle sur le canevas. La position de la tortue est marquée par une extrémité de flèche, dit le « pointeur » ou la « tête » de la tortue.

La tortue évolue au cours du dessin et la plupart des actions réalisables le sont par rapport à la position courante de la tortue.

goto est une fonction du module Turtle (bien l’écrire en un seul mot). Elle permet le déplacement de la tortue du point courant à un nouveau point.

Le canevas est muni d’un système de coordonnées dont l’origine (0,0) est le centre de la fenêtre et d’axes parallèles aux côtés de la fenêtre et orientés comme en mathématiques (axe des abscisses horizontal et orienté de la gauche vers la droite, axe des ordonnées vertical et orienté du bas vers le haut) :

../../../_images/turtle-axes-legende.png

Les axes du canevas d’une fenêtre Turtle rendus artificiellement visibles.

Attention ! par défaut, ces axes ne sont pas visibles et, en pratique, il est rare de faire en sorte de les rendre visibles (le programmeur devrait écrire lui-même le code qui le permettrait).

L’unité sur chacun des axes est le pixel de l’écran.

Par défaut, la tortue commence son déplacement en (0,0). L’instruction goto(50,150) déplace la tortue jusqu’au point (50, 150) :

../../../_images/turtle-deplacement-legende.png

Suite de dépacements

La ligne de déplacement s’affiche en noir, de manière animée.

Pour tout déplacement, il suffit d’appeler la fonction goto :

1
2
3
4
5
6
from turtle import *

goto(50,150)
goto(200,0)
goto(170,-30)
exitonclick()
  • Ligne 3 : le point courant est (0,0). La tortue va se déplacer au point (50, 150). Le déplacement est dessiné sur le canevas.
  • Ligne 4 : le point courant est (50,150). La tortue va se déplacer au point (200, 0) qui sera alors le nouveau point courant.

Le code précédent est aussi équivalent à :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from turtle import *

A=(50,150)
B=(200,0)
C=(170, -30)

goto(A)
goto(B)
goto(C)
exitonclick()

Autrement dit, on peut aussi écrire les points sous forme de couple de nombres (entiers ou pas) et référencés par des variables que l’on transmet à la fonction goto.

Tracé de lignes discontinues

Par défaut, quand la tortue se déplace, elle laisse une trace. Pour les explications qui suivent, on peut imaginer que la trace est effectuée par un stylet porté par la tortue et que l’on peut lever ou abaisser le stylet.

Si vous voulez que la tortue interrompe provisoirement le tracé de son déplacement, il suffit :

  • d’appeler la fonction up() pour suspendre le tracé (c’est comme si on levait le stylet)
  • de déplacer la tortue avec la fonction goto() à l’endroit souhaité
  • d’appeler la fonction down() pour reprendre le tracé (c’est comme si on abaissait le stylet).

Illustration :

../../../_images/turtle-deplacement-discontinu-legende.png

Tracés discontinus

1
2
3
4
5
6
7
8
from turtle import *

goto(200,0)
up()
goto(200,300)
down()
goto(-100,300)
exitonclick()
  • Ligne 4 : un segment a été tracé et le stylet est alors levé
  • Ligne 5 : la tortue se déplace du point (200,0) au point (200,300) sans que le déplacement ne dessine le segment car la fonction up() est active (à la ligne 4).
  • Lignes 6-7 : le stylet est abaissé et le segment de (200,300) à (-100,300) est dessiné.

Cacher le pointeur de la tortue

Par défaut la « tête » de la tortue est représentée par une sorte d’extrémité de flèche (un « pointeur ») qui matérialise le déplacement de la tortue. Pour des raisons de lisibilité et d’esthétique du dessin, on préfère souvent cacher la tête de la tortue. C’est possible avec la fonction hideturtle du module Turtle :

../../../_images/turtle-hide.png

Tête de la tortue invisible

Il suffit d’appeler une seule fois la fonction hideturtle en début de code pour que le pointeur de la tortue disparaisse de tous les déplacements qui suivent ainsi que du dessin final.

1
2
3
4
5
6
7
8
9
from turtle import *

hideturtle()
goto(50,150)
goto(200,0)
goto(170,-30)
goto(0,0)

exitonclick()
  • Ligne 3 : on cache le pointeur de la tortue : le pointeur est absent des déplacements et du dessin final.

A tout moment, on peut faire réapparaître le pointeur de la tortue en écrivant la show() dans le code.

Dans le code, hideturtle() peut s’abréger en ht(). De même, showturtle() peut s’abréger en st().

En principe, la tête de la tortue est censée toujours indiquer la direction du déplacement courant de la tortue. Mais lorsque la tortue se déplace avec la fonction goto, la direction ne change jamais (elle pointe toujours vers l’est) et donc, dans ce cas, la présence du pointeur de la tortue est peu utile.

Marquer un point avec la fonction dot

Il est possible, par exemple pour repérer une position sur le canevas, de placer un petit disque à une position donnée, là où se trouve la tortue :

../../../_images/turtle-dot.png

Points avec dot

Pour cela on utilise la fonction dot() du module Turtle.

1
2
3
4
5
6
7
8
from turtle import *

goto(50,50)
dot()
goto(100,25)
goto(150,50)
dot("red")
exitonclick()
  • Lignes 4 et 7 : on trace des gros points avec la fonction dot. S’il n’y a pas d’argument de couleur, la couleur de remplissage est le noir.

Des couleurs sont accessibles par leur nom anglais et placées entre guillemets (comme des chaînes de caractères). Voici quelques exemples de couleurs possibles :

"blue", "orange", "red", "green", "white".

Le diamètre du petit disque est par défaut de 5 unités.

Tracer un disque coloré

On peut tracer à la position courante de la tortue un disque de taille donnée et rempli d’une couleur donnée :

../../../_images/turtle-disques.png

Disques avec la fonction dot

Pour cela, on utilise la fonction dot :

1
2
3
4
5
6
from turtle import *

dot(100, "red")
goto(100, 0)
dot(100, "orange")
exitonclick()
  • Ligne 3 : tracé d’un disque de centre l’origine (0,0), de diamètre 100 et rempli en rouge.
  • Ligne 4 : déplacement de la tortue au point (100,0).
  • Ligne 5 : tracé d’un disque de centre le point courant, ici (100,0), de diamètre 100 et rempli en orange.
  • Ligne 5 : le tracé du disque orange a caché le tracé du segment car le disque a été dessiné après et donc par-dessus un morceau du segment déjà tracé.
  • Ligne 4 : le tracé du segment sur le disque rouge est visible car le segment est tracé après le disque.

Un appel tel que dot(100) sans utiliser de couleur trace un disque rempli de noir.

Le diamètre, pas le rayon !

Attention ! la valeur numérique donnée à la fonction dot N’est PAS le rayon du disque mais son diamètre.

Tracé de disque et fonctions up() ou down()

Les fonctions down() et up() permettent simplement de cacher ou de marquer les tracés rectilignes du déplacement de la tortue. Mais, la possibilité de dessiner un disque est indépendante de ces fonctions. Ainsi, même si la tortue est dans l’état up, il est possible de dessiner des disques.

Par exemple, le code suivant affiche deux disques sans aucune trace de déplacement

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
from turtle import *

up()

goto(100,0)
dot(100)
goto(200,0)
dot(80)

exitonclick()

ce qui affiche :

../../../_images/turtle-dot_deplacements.png

dot en situation de up