![]() |
Bienvenue sur python.gecif.net | LE SITE POUR APPRENDRE A PROGRAMMER EN PYTHON | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Le module turtle (la "tortue" en français) est un module Python contenant un crayon programmable, capable de dessiner n'importe quelles figures géométriques décrite par une suite d'instructions (tracer un trait, tourner à droite, tracer un cercle, etc.). Pour piloter la tortue à la main il faut utiliser la console interactive de Python qui s'appelle IPython (et non la console classique d'EduPython). La console interactive de Python est IPython, disponible dans le menu Outils -> Outils -> Ipython d'EduPython.
Pour découvrir l'utilisation du module graphique turtle de Python par la pratique, réalisez en un premier temps les actions suivantes et mémorisez-les : 1 - lancez la console intéractive IPython en cliquant sur son icône disponible dans le menu Outils -> Outils -> Ipython d'EduPython :
Remarque : si l'icône d'IPython n'est pas disponible il faut créer un raccourcis sachant qu'IPython est dans le répertoire "C:\Program Files\EduPython\IPython.exe" La console interactive IPython s'ouvre alors dans une nouvelle fenêtre extérieure à EduPython :
2 - Importez le module turtle en tapant la ligne from turtle import * dans la console IPython :
3 - Nous allons dessiner un carré dans la fenêtre de la tortue. Pour cela tapez la commande forward(200) dans la console :
La fenêtre de la tortue apparaît alors et un trait de longueur 200 est tracé :
4 - Tapez ensuite la commande left(90) :
Le curseur de la tortue effectue alors une rotation de 90° vers la gauche :
5 - Répétez 3 fois les étapes précédentes 3 et 4 : le carré complet est alors tracé dans la fenêtre de la tortue
Bon à savoir :
Enfin pour conserver les instructions traçant une figure dans un fichier afin de relancer la totalité du dessin grâce à EduPython il faut que le programme finisse par l'instruction done(). Voici par exemple le programme à taper dans EduPython pour tracer le carré de côté 200 : # Trace un carré avec la tortue : On remarque que pour tracer le carré on a lancé 4 fois le même bloc d'instructions (forward(200) suivi de left(90)). Pour optimiser le programme on peut alors demander à une boucle for de répéter 4 fois ce bloc d'instructions : # La boucle for répète 4 fois le traçage d'un côté : 6 - Après avoir effacé la fenêtre de la tortue par la commande reset(), essayez d'y dessiner un triangle équilatéral de côté 150
Il vous reste maintenant à rechercher expérimentalement les commandes à lancer dans IPython pour dessiner un triangle équilatéral de côté 150 avec la tortue. Vous recherchez interactivement les différentes instructions traçant le triangle dans IPython (n'hésitez pas à utiliser l'instruction undo() pour annuler la dernière commande si vous vous êtes trompé), puis une fois la solution trouvée vous enregistrerez votre programme dans EduPython dans un fichier nommé triangle.py, sans oublier l'importation du module turtle au début du programme et l'instruction done() à la fin du programme : # Programme qui trace un triangle avec la tortue : Voilà à quoi doit ressembler votre triangle équilatéral de côté 150 dans la fenêtre de la tortue :
Voyons maintenant les différentes instructions de la tortue. Avant de vouloir utiliser les instructions de la tortue dans un programme il faut bien penser à importer le module turtle en utilisant la ligne suivante : from turtle import * Après importation du module turtle, les instructions suivantes sont disponibles pour piloter la tortue et ainsi dessiner dans sa fenêtre.
IMPORTANT : toutes ces instructions sont des fonctions écrites en Python. Pour les appeller il faut toujours lancer le noms des instructions suivi d'un paire de parenthèses, que l'instruction ait besoin ou non d'un paramètre. Exemples :
Dans les tableaux de synthèses ci-dessus les paranthèses ne sont pas indiquées pour ne pas allourdir la lecture : seul le nom et le rôle des instructions sont indiqués, mais pas leur syntaxe.
Pour dessiner il suffit de déplacer le curseur de la tortue (marche avant avec forward ou marche arrière avec back) et de l'orienter (tourner à droite avec right et tourner à gauche avec left). A chaque déplacement la tortue laisse une trace qui dessine la figure. Si on veut déplacer la tortue sans dessiner il faut lever le crayon avec up, déplacer le curseur en un autre point, puis baisser le crayon avec down pour redessiner à nouveau. La tortue ne dessine pas que des traits droits : elle peut également dessiner un cercle ou un arc de cercle grâce à la fonction circle :
Enfin la fonction pensize permet de configurer l'épaisseur du trait. Par exemple pensize(10) trace des traits de 10 pixels d'épaisseur.
La fonction color permet de configurer la couleur utilisée pour dessiner en utilisant les noms des couleurs en anglais sous forme de chaînes de caractères :
Testez maintenant un par un tous les exemples suivants en tapant les instructions données dans la console interactive IPython, après avoir vidé la fenêtre de la tortue avec l'instruction reset(), et observez bien le tracer des figures obtebnus afin de comprendre le rôle de chaque nouvelle instruction. Exemple 1 : le programme suivant trace un cercle rouge d'épaiseur 10 pixels : pensize(10) Voici le résultat : Les instructions begin_fill et end_fill permettent de dessiner une figure fermée dont l'intérieur sera coloré. Exemple 2 : le programme suivant trace un cercle rouge d'épaiseur 10 pixels avec l'intérieur coloré : pensize(10) On remarque que les instructions begin_fill et end_fill encadrent seulement les instructions de traçage (ici la fonction circle(100)) et pas les instructions de configuration de l'épaisseur du crayon ou de la couleur. Voici le résultat : Enfin si on passe 2 couleurs différentes à la fonction color, la première représente la couleur du trait et la seconde la couleur du fond de la figure. Exemple 3 : le programme suivant trace un cercle rouge d'épaiseur 10 pixels avec l'intérieur coloré en jaune : pensize(10) Voici le résultat : Pour utiliser plus de nuances de couleurs on peut préciser leur composantes dans le modèle ROUGE VERT BLEU (modèle RVB ou RGB). Pour que les composantes Rouge Vert et Bleu d'une couleur soit comprise entre 0 et 255 il faut basculer le mode de couleur grâce à la fonction colormode() : colormode(255) Ensuite, la couleur du pinceau se configure avec la fonction pencolor(), et la couleur du fond se configure avec la fonction fillcolor(). Par exemmple le programme suivant trace à nouveau un cercle jaune avec un trait rouge : pensize(10) Voici le résultat : Enfin les 3 composante d'une couleur peuvent être réunies dans une chaîne de caractères commençant par # et de la forme '#RRVVBB' où :
Par exemple la chaîne '#FF0000' représente la couleur rouge et '#FFFF00' représente la couleur jaune. Le programme suivant trace à nouveau un cercle jaune avec un trait rouge : pensize(10) Voici le résultat (toujours le même) : L'avantage d'utiliser les composantes ROUGE VERT et BLEU des couleurs est de pouvoir réaliser des palettes de couleurs personalisées avec des nuanciers de couleurs très diversifiés. Comme chaque composante ROUGE VERT et BLEU peut prendre 256 valeurs différentes (de 0 à 255), il est possible d'utiliser 256*256*256=16777216 soit plus de 16 millions de couleurs différentes ! Le programme suivant par exemple trace 30 ronds dont la couleur dépend de leurs coordonnées : from turtle import * Et voici le résultat (30 couleurs différentes parmi les 16 millions existantes) : Et pour changer la palette de couleurs il suffit de modifier le calcul des variables rouge, vert et bleu en fonction des coordonnées x et y. Voici un exemple : from turtle import * Et voici le résultat : Pour obtenir la valeur numérique d'une couleurs parmi les 16 millions de couleurs possibles, cliquez ici pour ouvrir un nuancier de couleur. Voilà, vous venez de voir les possibiltés de base pour tracer une figure dans la fenêtre graphique de la tortue. Vous savez désormais :
Vous pouvez maintenat passer à la partie "APPLICATION" de la tortue pour essayer de dessiner les différentes figures imposées.
Ajouter de l'interactivité consiste à prendre en compte les évènements ou les ordres venant de l'utilisateur. Ces évènements peuvent venir de 2 sources :
Voyons comment prendre en compte ces évènement avec le module turtle de Python afin que notre programme réagisse aux ordres donnés par l'utilisateur. Commençons par le clavier : pour détecter qu'une touche du clavier a été enfoncée il aut utiliser la fonction onkeypress en lui passant en paramètre le nom d'une fonction à lancer en cas d'appui sur une touche particulière. Voici tout de suite un premier exemple à tester dans EduPython : from turtle import * Cliquez ici pour télécharger ce programme (fichier clavier_turtle.pyw) Dans ce programme on a créé 4 fonctions :
Ensuite grâce à la fonction onkeypress on indique que :
De plus si on appuie sur les touches BackSpace, c, r ou b on lance restpectivement les fonctions undo, clear, reset ou bye du module turtle. Enfin après avoir préparé le lien entre les touches du clavier et les fonctions à lancer on lance le gestionnaire l'évènement qui va détecter les touches enfoncées en appelant la fonction listen(). Grâce à la fonction onkeypress on peut lancer n'importe quelle fonction (fonction créée par l'utilisateur ou fonction native déjà existante) lorsqu'on appuie sur une touche quelconque. Il faut cependant conaître le code des touches spéciales du clavier. En voici la liste :
A retenir : pour lancer une fonction particulière en réaction à l'appui sur une touche du clavier on utilise la fonction onkeypress(fonction,code) où :
Voyons maintenant comment prendre en compte les évènements venant de la souris. Pour cela on utilise la fonction onscreenclick qui lance une fonction particulière si on clique sur un des trois boutons de la souris. Voici tout de suite un exemple à tester dans EduPython : from turtle import * Cliquez ici pour télécharger ce programme (fichier souris_turtle.pyw) La fonction onscreenclick attend 2 paramètre : le nom de la fonction à lancer et le numéro du bouton à détecter (1 pour gauche, 2 pour centre et 3 pour droit). Si le numéro du bouton n'est pas indiqué alors la fonction onscreenclick détectera le bouton gauche par défaut. Ainsi :
De plus la fonction onscreenclick renvoie les coordonnées du curseur de la souris sous forme de 2 entiers : les fonction à lancer doivent donc attendre 2 paramètres (x et y) afin de réceptionner les coordonées du point cliqué par la souris (même si elles ne sont pas utilisées). Un autre exemple : on dessine une grille contenant 4 cases et on veut déterminer dans quelle case on clique : Cliquez ici pour télécharger ce programme souris_grille.pyw commenté et le tester dans EduPython Exemple d'application : le jeu Tic-Tac-Toe (appelé aussi "le morpion") dans une grille 2x2 :
Cliquez ici pour télécharger ce programme tic_tac_toe.pyw et pour le tester dans EduPython Autre exemple d'application : le jeu Tic-Tac-Toe dans une grille 10x10 : Ce programme en Python montre comment calculer automatiquement la case cliquée avec la souris dans une grille 10x10 (100 cases différentes)
sans avoir besoin de calculer à la main une à une les coordonnées de chacune des 100 cases. Il y a 10 colonnes numérotées de 0 à 9, et 10 lignes numérotées de 0 à 9. En cliquant dans une des 100 cases le programme calcule automatiquement le numéro de la colonne (entre 0 et 9) et le numéro de la ligne (entre 0 et 9). Cet exemple est bien sûr adaptable à toutes autre grille de dimensions différentes. Cliquez ici pour télécharger ce programme grille_10x10.pyw et pour le tester dans EduPython
Autre exemple d'application : le jeu Mastermind : Ce programme possède une fonction grille paramétrique, qui permet de tracer une grille de taille quelconque en fonction des valeurs qui lui sont passées en paramètre. Dans l'exemple ci-dessous la fonction grille est appelée 3 fois pour tracer 3 grilles différentes :
De plus ce programme montre comment remplir automatiquement les grilles en cliquant seulement sur la grille 4x2 pour choisir une des 8 couleurs. Cliquez ici pour télécharger ce programme mastermind.pyw et pour le tester dans EduPython
Pour obtenir de l'aide sur une nouvelle fonction il faut utiliser la fonction help dans la console de Python en lui passant en paramètre le nom de la nouvelle fonction. Exemple : quelle est la syntaxe et les différentes possibilités de la fonction shape qui permet de configurer la forme du curseur de la tortue ? Pour le savoir, tapez help(shape) dans la console de Python. Il vous renvoie directement la syntaxe de shape : on comprend alors que le paramètre à passer à la fonction shape peut être 'arrow', 'turtle', 'circle', 'square', 'triangle', ou 'classic'. A vous de les tester : shape('square'), shape('triangle'), shape('turtle'), etc. Pour obtenir la liste de toutes les fonctions disponibles dans le module turtle il faut lancer les 2 lignes suivantes : import turtle as tortue On obtient alors la liste complète des 130 fonctions du module turtle. La fonction help permet ensuite d'obtenir des informations sur les nouvelles fonctions afin de pouvoir désormais les utiliser. Voici la liste complète des 130 fonctions que propose le module turtle :
Liste des instructions de la tortue (fichier PDF) Accéder à l'activité 2 de Python (la tortue) du serveur NESSI
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|