Découvrir et Utiliser le Module Turtle en Python

Ce document explore les fonctionnalités du module turtle en Python, en détaillant comment configurer la fenêtre d'affichage, tracer des figures géométriques, créer des spirales, représenter des fonctions mathématiques et aborder des concepts de probabilité. Les exemples fournis visent à faciliter l'apprentissage de la programmation graphique pour les enseignants et les élèves.

Illustration schématique du module Turtle avec une tortue traçant une ligne.

Configuration de la Fenêtre d'Affichage Turtle

Le module turtle offre une grande flexibilité pour la configuration de sa fenêtre d'affichage, souvent appelée canevas. Il est possible de définir ses dimensions, sa position à l'écran, son titre et sa couleur de fond.

Paramètres de Base : setup() et title()

La fonction setup(width, height, startx, starty) permet de contrôler la taille et la position de la fenêtre. Par défaut, la largeur est de 50% de l'écran, la hauteur de 75%, et la fenêtre est centrée. La fonction title(titlestring) définit le titre affiché dans la barre de titre de la fenêtre.

Modification des Couleurs et Arrière-plans : bgcolor() et bgpic()

La couleur de fond de la fenêtre peut être modifiée à l'aide de la fonction bgcolor(colorname). Les couleurs peuvent être spécifiées par leur nom (ex: "blue", "red") ou leur code hexadécimal. Il est également possible d'utiliser des valeurs RGB sous forme de tuple, où chaque composante (Rouge, Vert, Bleu) est comprise entre 0 et 1. Par exemple, (0.50, 0.50, 0.50) correspond à un gris moyen.

Pour personnaliser davantage l'apparence, la fonction bgpic(picname) permet de définir une image de fond. Le chemin vers l'image doit être fourni sous forme de chaîne de caractères. Les formats PNG et GIF sont supportés.

Gestion de la Fermeture de la Fenêtre

Pour éviter que la fenêtre ne se ferme automatiquement après l'exécution du script, deux fonctions sont disponibles :

  • bye() : Ferme la fenêtre et termine l'exécution du programme. À placer en fin de script.
  • exitonclick() : Permet de fermer la fenêtre en effectuant un clic gauche sur celle-ci.

Affichage et Masquage de la Tortue : hideturtle() et showturtle()

Il est possible de masquer ou d'afficher le curseur (la tortue) à l'aide des fonctions hideturtle() et showturtle() respectivement.

Exemple de configuration de fenêtre turtle avec dimensions, titre et couleur de fond personnalisés.

Traçage de Figures Géométriques

Le module turtle permet de tracer une variété de figures géométriques en déplaçant une "tortue" sur un canevas.

Marche d'Escalier

Les fonctions suivantes permettent de tracer une marche d'escalier et un escalier complet :

  • marche(h) : Trace une marche d'escalier d'une hauteur et largeur de h pixels, à partir de la position courante et avec une orientation de 0 degrés (vers l'Est).
  • escalier(n, h) : Trace un escalier composé de n marches, chacune ayant une hauteur et une largeur de h pixels, à partir de la position courante.

Pour tracer une marche d'escalier comme décrit, à partir du point (-150, -150) avec une hauteur et une largeur de 50 pixels, on peut utiliser le script suivant :

from turtle import *speed(0) # Vitesse maximalepenup()goto(-150, -150)pendown()def marche(h): forward(h) left(90) forward(h) left(90)def escalier(n, h): for _ in range(n): marche(h)escalier(5, 50) # Exemple pour 5 marches de 50 pixels

Triangle Équilatéral

Pour tracer un triangle équilatéral de côté 100 pixels dont un sommet est à l'origine (0,0), on peut procéder comme suit :

from turtle import *speed(0)penup()goto(0, 0)pendown()for _ in range(3): forward(100) left(120)
Illustration d'une marche d'escalier tracée par le module Turtle.

Création de Spirales

Le module turtle peut être utilisé pour générer des spirales complexes.

Spirale Carrée

La fonction spirale_carre(n, increment) permet de tracer des spirales "carrées". Le paramètre n contrôle le nombre de segments et increment la taille du pas.

Spirale Triangulaire

La fonction spirale_triangle(n, increment) trace des spirales "triangulaires" de manière similaire.

Spirale de Polygones Généralisée

La fonction spirale_polygone(n, m, increment) généralise les deux précédentes. Elle permet de tracer des spirales basées sur des polygones réguliers à m côtés.

Rainbow Spiral Using Triangle in Turtle || Python Turtle Animation

Représentation de Fonctions et Repères

Il est possible de tracer des repères orthogonaux et de représenter graphiquement des fonctions mathématiques.

Fonction de Traçage de Repère : repere()

La fonction repere(xmin, xmax, xgrad, ymin, ymax, ygrad) trace les axes d'un repère orthogonal. Les paramètres définissent les limites des axes (xmin, xmax, ymin, ymax) et les graduations (xgrad, ygrad).

Tracé de Fonctions

Pour tracer la fonction $f: x \mapsto x^2$ sur l'intervalle $[-10; 10]$ avec un pas de 1, on peut écrire un script qui calcule les points $(x, f(x))$ et les relie. Une fonction plus générale graphique(xmin, xmax, xgrad, ymin, ymax, ygrad, fonction, pas) permet de représenter n'importe quelle fonction dans une fenêtre paramétrable avec un pas régulier.

from turtle import *speed(0)def repere(xmin, xmax, xgrad, ymin, ymax, ygrad): # Implémentation du tracé du repère passdef graphique(xmin, xmax, xgrad, ymin, ymax, ygrad, fonction, pas): repere(xmin, xmax, xgrad, ymin, ymax, ygrad) penup() # Calculer le point de départ x = xmin y = fonction(x) goto(x, y) pendown() # Tracer la fonction x = xmin + pas while x <= xmax: y = fonction(x) goto(x, y) x += pas# Exemple d'utilisation pour f(x) = x^2 sur [-10, 10]def f(x): return x**2graphique(-10, 10, 1, 0, 100, 10, f, 1)
Graphique d'une parabole représentant la fonction x^2, tracé avec le module Turtle.

Simulation de Monte-Carlo et Probabilités

Le module turtle peut être utilisé pour illustrer des concepts de probabilité, notamment via la méthode de Monte-Carlo.

Estimation de Pi

En générant aléatoirement des points dans un carré circonscrit à un disque unité, on peut estimer la valeur de $\pi$. La probabilité qu'un point tombe dans le disque est le rapport des aires : $\frac{\text{Aire du disque}}{\text{Aire du carré}} = \frac{\pi \times 1^2}{2^2} = \frac{\pi}{4}$. D'après la loi faible des grands nombres, la fréquence des points dans le disque tend vers $\frac{\pi}{4}$ lorsque le nombre de points augmente.

La fonction pointa_aleatoire() génère les coordonnées d'un point aléatoire dans le carré $[-1, 1] \times [-1, 1]$. L'estimation de $\pi$ se fait en calculant la fréquence des points tombant dans le disque unité ($x^2 + y^2 \leq 1$).

Distance Moyenne entre Deux Points

Deux fonctions permettent d'aborder la distance moyenne entre des points aléatoires :

  • distance(xA, yA, xB, yB) : Calcule la distance euclidienne entre deux points $(xA, yA)$ et $(xB, yB)$.
  • distance_moyenne_carre(n, cote) : Implémente l'algorithme de Monte-Carlo pour estimer la distance moyenne entre deux points choisis aléatoirement dans un carré de côté cote, sur un échantillon de n points. Elle affiche également tous les segments reliant ces couples de points.

La valeur théorique de la distance moyenne pour un carré de côté 20 tend vers $20 \times \left(\frac{2+\sqrt{2}}{15} + \frac{1}{3} \ln (1+\sqrt{2}) \right) \approx 10,428$. Pour un rayon de 5 (carré de côté 10), la distance moyenne tend vers $5 \times \frac{128}{45 \pi} \approx 4,527$. La loi faible des grands nombres assure que la distance moyenne calculée sur l'échantillon se rapproche de la valeur théorique lorsque n augmente.

Rainbow Spiral Using Triangle in Turtle || Python Turtle Animation

Illustration montrant des points aléatoires dans un carré, certains à l'intérieur d'un cercle inscrit.

Configuration du Canevas et Exportation

Pour adapter la fenêtre turtle à un espace de coordonnées spécifique, on utilise Screen().setworldcoordinates(xmin, ymin, xmax, ymax). Cela permet de définir le système de coordonnées utilisé par la tortue.

Exportation des Dessins

Le module turtle s'appuie sur Tkinter, qui ne propose nativement que la méthode .postscript() pour exporter les dessins au format .eps. Pour obtenir d'autres formats comme SVG, JPG ou GIF, il est nécessaire d'utiliser des bibliothèques Python supplémentaires et de convertir le fichier PostScript généré.

tags: #connaitre #les #dimensions #du #canvas #turtle

Articles populaires: