TP3 - turtle : utiliser une bibliothèque
¶

A. Ridard

Présentation¶

Python fournit certaines fonctions pour les besoins les plus courants : type(), print(), input(), int(), ...
Il contient également de nombreuses bibliothèques fournissant des fonctions supplémentaires plus spécifiques.
Nous les introduirons, au fur et à mesure, selon nos besoins...

Commençons ici par la bibliothèque turtle qui permet de reproduire les fonctionnalités de base du langage de programmation éducatif Logo.
Les fonctions de ce langage font se déplacer une tortue munie d'un crayon à la surface d'une feuille virtuelle.
On peut alors observer l'exécution du programme à travers les mouvements de la tortue et le tracé qu'elle laisse derrière elle.

D'abord, il faut importer les fonctions de la bibliothèque

In [ ]:
from turtle import *

Les fonctions de turtle permettent d'orienter et déplacer la tortue dans le plan cartésien à deux dimensions.

$$ \begin{array}{|l|l|} \hline \textrm{\textbf{fonction}} & \textrm{\textbf{description}}\\ \hline \hline \textrm{goto(x,y)} & \textrm{aller au point de coordonnées (x,y)} \\ \hline \textrm{forward(d)} & \textrm{avancer de la distance d} \\ \hline \textrm{backward(d)} & \textrm{reculer de la distance d} \\ \hline \textrm{left(a)} & \textrm{pivoter à gauche de l'angle a} \\ \hline \textrm{right(a)} & \textrm{pivoter à droite de l'angle a} \\ \hline \textrm{circle(r,a)} & \textrm{tracer un arc de cercle de rayon r et d'angle a} \\ \hline \textrm{dot(r)} & \textrm{tracer un point de rayon r} \\ \hline \end{array} $$

La tortue commence au point de coordonnées (0,0), situé au centre de l'écran, et est orientée par l'axe des abscisses.
Les coordonnées et distances sont mesurées en pixels et les angles en degrés.
Les arcs de cercles sont parcourus dans le sens trigonométrique si l'angle est positif, et le sens horaire si l'angle est négatif.

/!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\

Pour que l'exécution se termine correctement, il est indispensable de fermer la fenêtre graphique.
Si vous cliquez sur la fenêtre, elle ne pourra plus être fermée, il faudra alors redémarrer le Kernel !

/!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\

In [ ]:
forward(60)
left(120)
forward(60)
right(90)
circle(60,300)
right(90)
forward(60)
goto(0,0)

# la fonction suivante termine l'exécution du programme en cliquant sur la figure 
exitonclick()
TurtleScreen._RUNNING = True

S'ajoute à cette base des fonctions permettant de modifier les dessins produits par chacun des déplacements.

$$ \begin{array}{|l|l|} \hline \textrm{\textbf{fonction}} & \textrm{\textbf{description}} \\ \hline \hline \textrm{up()} & \textrm{relever le crayon (et interrompre le dessin)} \\ \hline \textrm{down()} & \textrm{redescendre le crayon (et reprendre le dessin)} \\ \hline \textrm{width(e)} & \textrm{fixer à e l'épaisseur du trait} \\ \hline \textrm{color(c)} & \textrm{sélectionner la couleur c pour les traits} \\ \hline \textrm{begin\_fill()} & \textrm{activer le mode remplissage} \\ \hline \textrm{end\_fill()} & \textrm{désactiver le mode remplissage} \\ \hline \textrm{fillcolor(c)} & \textrm{sélectionner la couleur c pour le remplissage} \\ \hline \end{array} $$

Par défaut, les tracés sont faits en noir avec une épaisseur d'un pixel.

Les couleurs peuvent être désignées par leur nom sous la forme de chaînes de caractères :
"black", "white", "grey", "pink", "purple", "blue", "green", "yellow", "orange", "red", "brown".

La surface contenue à l'intérieur de la trajectoire de la tortue, réalisée lorsque le mode remplissage est activé, prend la couleur choisie pour le remplissage (noir par défaut).

In [ ]:
# rectangle épais
#################

# on choisit l'épaisseur du trait
width(4)
# on choisit la couleur du trait
color("blue")
# on effectue le déplacement pour tracer le rectangle
goto(60,0)
goto(60,110)
goto(0,110)
goto(0,0)


# déplacement sans trait
########################
up()
goto(5,5)
down()


# sablier gris
##############

# on choisit une nouvelle épaisseur pour le trait
width(1)
# on choisit une nouvelle couleur pour le trait
color("red")
# on choisit une couleur de remplissage
fillcolor("grey")
# on commence le remplissage
begin_fill()
# on effectue le déplacement pour tracer le sablier
goto(55,5)
goto(5,105)
goto(55,105)
goto(5,5)
# on termine le remplissage
end_fill()


# la fonction suivante termine l'exécution du programme en cliquant sur la figure 
exitonclick()
TurtleScreen._RUNNING = True

Enfin, quelques fonctions permettent de configurer l'action de la bibliothèque turtle en général.

$$ \begin{array}{|l|l|} \hline \textrm{\textbf{fonction}} & \textrm{\textbf{description}} \\ \hline \hline \textrm{reset()} & \textrm{tout effacer et recommencer à zéro} \\ \hline \textrm{speed(s)} & \textrm{définir la vitesse de déplacement de la tortue} \\ \hline \textrm{title(t)} & \textrm{donner le titre t à la fenêtre de dessin} \\ \hline \textrm{ht()} & \textrm{ne montre plus la tortue (seulement le dessin)} \\ \hline \end{array} $$

Les vitesses possibles sont à choisir parmi les chaînes de caractères suivantes :
"slowest", "slow", "normal", "fast", "fastest"

ou parmi les entiers de 0 à 10 (1 est le plus lent, 10 le plus rapide et 0 le déplacement instantané).

Exercices (dessiner "à la main")¶

Exercice 1 (drapeau du Japon)¶

Dessiner un rectangle de longueur 300 et de largeur 200

In [ ]:
# réponse

exitonclick()
TurtleScreen._RUNNING = True

Dessiner un disque rouge de rayon 60

In [ ]:
# réponse

exitonclick()
TurtleScreen._RUNNING = True

Dessiner le drapeau du Japon

No description has been provided for this image
In [ ]:
# réponse

exitonclick()
TurtleScreen._RUNNING = True

Exercice 2 (pavillon maritime de Suisse)¶

Dessiner un rectangle rouge de longueur 300 et de largeur 200

In [ ]:
# réponse

exitonclick()
TurtleScreen._RUNNING = True

Dessiner le pavillon maritime de Suisse

No description has been provided for this image
In [ ]:
# réponse

exitonclick()
TurtleScreen._RUNNING = True

Exercice 3 (Yin et Yang)¶

Dessiner le Yin et Yang

No description has been provided for this image
à l'aide des indications suivantes :
No description has been provided for this image
In [ ]:
# réponse

exitonclick()
TurtleScreen._RUNNING = True