Leçon 9

Le module turtle

Dans le répertoire Python créez un dossier cours9. Il contiendra tous les fichiers de cette leçon.

turtle est un module graphique du langage de programmation Python. Il permet de déplacer une tortue sur l’écran.

Fonctions principales

reset() Efface l’écran, recentre la tortue et remet les variables à zéro
forward(distance) Avance d’une distance donnée en pixels
backward(distance) Recule d’une distance donnée en pixels
left(angle) Pivote vers la gauche de angle exprimé en degré
right(angle) Pivote vers la droite de angle exprimé en degré
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)
speed(vitesse) Précise la vitesse de l'exécution du dessin de 1 (très lent) à 10 (très rapide). 0 est le plus rapide.
width(épaisseur) Choisit l’épaisseur du tracé
color(couleur) Détermine la couleur (en anglais) du tracé (noir par défaut)
fill(1) Remplit un contour fermé à l’aide de la couleur sélectionnée
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)

La liste des fonctions précédentes n'est pas exhaustive, il y a d'autre fonctions dans le module Turtle.

Exercices

Exercice 1

Dans cet exercice nous allons déssiner un carré.
Recopiez le script ci-dessous.

On repète 4 fois ces deux instructions et le carré est tracé

On va modifier le script précédent en utilisant une boucle.

Maintenant on souhaiterait dessiner plusieurs carrés. Pour cela nous allons créer la fonction carre().

Ici nous allons modifier la fonction carre pour pouvoir préciser la longueur du côté du carré. Cette longueur est le paramètre de la fonction. C'est lors de l'appel de la fonction que le paramètre est précisé.

Ici la fonction travaille avec le paramètre cote et en ligne 8 on précise que ce paramètre sera égal à 100.

Maintenant nous allons utiliser la fonction pour dessiner plusieurs carrés.

Modifier le script précédent en utilisant une boucle où i variant de 0 à 50 pour dessiner les carrés de cote 0, 5, 10, 15, 20, ......

Dans votre script, vous rajouterez dans la boucle l'instruction left(5) et vous dessinerez 100 carrés au lieu de 30. Vous devez obtenir la figure ci-dessous.

Exercice 2

Modifiez le script précédent en remplaçant la fonction carre(cote) par hexagone(cote) pour obtenir des hexagones à la place des carrés

Exercice 3

Copiez le script ci-dessous

Dans le script ci-dessus, en ligne 4, la variable i varie de 1 à 200 tout les 5.

Maintenant nous allons choisir de manière aléatoire dans une liste de couleurs, la couleur du tracé.
Recopiez le script ci-dessous

Modifiez le script précédent en utilisant une fonction qui dessinera une figure de votre choix, à la place du cercle.
L'exemple ci-dessous propose de remplacer le cercle par un triangle équilatéral.
La fonction triangle(cote) doit être crée.

Exercice 4

Copiez le script ci-dessous

Modifiez le script précédent comme bon vous semble.

Exercice5

Copiez le script ci-dessous, testez le puis modifiez les valeurs pour créer une nouvelle figure

Une première courbe fractale : le flocon de von Koch

Les fractales

Une fractale est une courbe mathématique qui possède une propriété intéressante visuellement : lorsque l’on regarde des détails de petite taille, on retrouve des formes correspondant aux détails de plus grande taille. On parle d'auto-similarité.

Le flocon de von Koch

La première courbe à tracer a été imaginée par le mathématicien suédois Niels Fabian Helge von Koch, afin de montrer que l’on pouvait tracer des courbes continues en tout point, mais dérivables en aucun.
Le principe est simple : on divise un segment initial en trois morceaux, et on construit un triangle équilatéral sans base au-dessus du morceau central. On réitère le processus n fois, n étant appelé l’ordre.
Dans la figure ci-dessous on voit les ordres 0, 1, 2 et 3 de cette fractale.

Si on trace trois fois cette figure en tournant de 120 °, on obtient successivement un triangle, une étoile, puis un flocon de plus en plus complexe.

La construction du flocon de von Koch

Le dessin de la fractale à l’ordre 0 est trivial, il suffit d’appeler forward() une fois.
À l’ordre 1, on va appeler quatre fois forward() , en appelant left() et right() pour changer la direction de la tortue entre chaque segments.
À l’ordre n ≥ 1, on va appliquer le même principe qu’à l’ordre 1, mais en remplaçant les appels à forward() par des dessins de segments à l’ordre n − 1.
Une fractale ressemblant au flocon de Koch est le Chou qui est constitué de plusieurs pointes, chacune constituée de plusieurs pointes, chacune constituée de plusieurs pointes ... jusqu’à l’ordre 5 ou 6 !

Exercice 5 (Koch à l’ordre 1)

) Écrivez une fonction koch_1(longueur) qui dessine un segment de Koch à l’ordre 1, de la longueur spécifiée. Les sous-segments de la figure sont de longueur longueur/3, et les angles sont de 60 ou 120 degrés.
Appelez cette fonction depuis votre programme pour vérifier son fonctionnement.

Exercice 6 (Début de généralisation : ordre 0 ou 1)

Modifiez votre fonction pour lui faire prendre en paramètre l’ordre de la fractale. La fonction est maintenant koch(n, longueur), ou n est l’ordre.
Modifiez le corps de la fonction pour qu’elle gère correctement les cas n = 0 et n = 1 (le cas n ≥ 1 viendra plus tard). Le code va ressembler à :

Exercice 7 (Koch à l’ordre n)

Modifiez la fonction Koch comme expliqué ci-dessus pour gérer les ordres n ≥ 2. Testez votre fonction avec différentes valeurs de n (en pratique, on ne voit plus grand chose avec un ordre supérieur à 5 ou 6).

Exercice 8

Créez la frise ci-dessous.