« Programmation Python/Turtle » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎top : Soulagement de la version imprimable avec AWB
m JackPotte a déplacé la page Python 3 par l'exemple/Turtle vers Programmation Python/Turtle sans laisser de redirection
Ligne 1 :
{{Python 3 par l'exemple}}
<noinclude>{{Programmation Python}}</noinclude>
{{w|Turtle}} est un module graphique.
{{Autres projets
|wikt=turtle
|w=Turtle}}
 
=== Tracer une spirale quelconque ===
'''Turtle''' est un module graphique du [[programmation|langage de programmation]] [[Apprendre_à_programmer_avec_Python|Python]]. Il est inspiré de la [[programmation Logo]] et permet de déplacer une tortue sur l’écran.
 
<source lang="python">
== Fonctions disponibles ==
from turtle import *
angle = 5
distance = 10
compteur = 0
 
while compteur <= 30:
=== Fonctions principales ===
forward(distance)
Pour utiliser une fonction il faut inscrire son nom et lui donner une valeur dans les parenthèses.
left(angle)
 
compteur += 1
Les principales fonctions mises à votre disposition dans le module ''turtle'' sont les suivantes :
angle += 2
 
* <code>reset()</code>
'''-> Efface l’écran, recentre la tortue et remet les variables à zéro'''
 
 
* <code>forward(distance)</code>
'''-> Avance d’une distance donnée'''
 
- Type de donnée : pixel
 
 
* <code>backward(distance)</code>
'''-> Recule d’une distance donnée '''
 
- Type de donnée : pixel
 
 
* <code>left(angle)</code>
'''-> Pivote vers la gauche'''
 
- Type de donnée : angle
 
 
* <code>right(angle)</code>
'''-> Pivote vers la droite'''
 
- Type de donnée : angle
 
 
* <code>up()</code>
'''-> Relève le crayon (pour pouvoir avancer sans dessiner)'''
 
 
* <code>down()</code>
'''-> Abaisse le crayon (pour recommencer à dessiner)'''
 
 
* <code>goto(x, y)</code>
'''-> Va à l’endroit de coordonnées (x, y)'''
 
- Type de donnée : pixel
 
/!\ Ne pas oublier d'utiliser la fonction up() avant d'utiliser goto() car sinon il tracera le parcours effectué
 
=== Autres fonctions ===
 
* <code>color(couleur)</code>
'''-> Détermine la couleur du tracé (noir par défaut)'''
 
- Type de donnée : chaîne de caractère
 
- Couleurs proposées :
 
----> "blue" => Bleu
 
----> "red" => Rouge
 
----> "green" => Vert
 
----> "yellow" => Jaune
 
----> "brown" => Marron
 
----> "black" => Noir
 
----> "white" => Blanc
 
----> "pink" => Rose
 
----> "orange" => Orange
 
----> "purple" => Violet
 
----> "grey" => Gris
 
 
* <code>width(épaisseur)</code>
'''-> Choisit l’épaisseur du tracé'''
 
- Type de donnée : pixel
 
 
* <code>speed(vitesse)</code>
'''-> Choisit la vitesse à laquelle se déplace le curseur'''
 
- Type de donnée : chaîne de caractère
 
- Vitesses proposées :
 
----> "slowest" => Le plus lent
 
----> "slow" => Lent
 
----> "normal" => Normal
 
----> "fast" => Rapide
 
----> "fastest" => Le plus rapide
 
 
* <code>circle(rayon, angle)</code>
'''-> 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)'''
 
- Type de donnée :
 
° rayon : pixel
 
° angle : angle
 
 
* <code>title(titre)</code>
'''-> Donne un titre à la fenêtre (par défaut le titre est Turtle Graphics)'''
 
- Type de donnée : chaîne de caractère
 
 
* <code>write(texte)</code>
'''-> Écrit du texte'''
 
- Type de donnée : chaîne de caractère
 
 
* <code>fill(1)</code>
'''-> Remplit un contour fermé à l’aide de la couleur sélectionnée'''
 
== Détails des fonctions ==
 
=== color() ===
La couleur peut être :
* une couleur prédéfinie précisé entre apostrophes droites (exemples : 'red', 'yellow', 'green', 'blue', 'brown', 'violet', 'purple', etc.)
* une [[w:Rouge vert bleu|couleur RVB]] avec trois variables r, v, et b comprises entre 0 et 1 (exemple : 1,0,0 pour le rouge)
 
=== Fill ===
 
Le remplissage peut se faire de deux manières. Par exemple pour remplir un carré :
 
{|
|
<pre>
begin_fill()
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
end_fill()
</pre>
|
<pre>
fill(1)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
fill(0)
</pre>
|}
 
== Exemples ==
* [[Python 3 par l'exemple/Turtle]]
 
== Compléments ==
* Le module '''turtle''' s'appuie sur le module '''tkinter''' ('''Tkinter''' pour les versions de python antérieures à 3), ça permet d'en utiliser les fonctionnalités. Par exemple pour enregistrer sa production au format postscript :
 
<source lang=python>
import turtle
 
#......
#.......
 
turtle.getcanvas().postscript(file="monoeuvre.eps")
</source>
 
Mais aussi de manière plus simple:
 
<source lang="python">
* Le module '''turtle''' permet de manipuler plusieurs tortues.
from turtle import *
 
speed("fastest") #Pour l'aider a aller plus vite
<source lang=python>
rayon = 1 #Le premier rayon par défaut
fred = turtle.Turtle()
rayonSpiral = 100
martha = turtle.Turtle()
while(rayon < rayonSpiral):
 
circle(rayon, 180)
fred.forward(100)
rayon += 2 #écartement entre 2 demi-cercle de la spirale
martha.left(45)
</source>
 
=== Tracer une lanterne ===
<source lang="python">
from turtle import *
import math
 
def lanterne(l = 100):
Si les méthodes associées aux tortues sont utilisées sans référence à une tortue particulière, elles s'appliquent à une tortue "anonyme" qui est automatiquement créée si nécessaire.
left(90)
 
forward(l)
Si aucune fenêtre d'affichage n'existe et qu'on agit sur une tortue, une fenêtre est automatiquement créée et affichée.
right(90)
 
forward(l)
Ces automatismes peuvent paraître pratiques mais peuvent aussi être source de confusion. Il vaut mieux les expliciter (subjectif).
right(90)
forward(l)
right(90)
forward(l)
right(135)
forward(l * math.sqrt(2))
left(90)
fillcolor("red")
fill(True)
forward(l * math.sqrt(2) / 2)
left(90)
forward(l * math.sqrt(2) / 2)
fill(False)
left(90)
forward(l * math.sqrt(2))
right(45)
 
lanterne(l = 100)
<source lang=python>
scene = turtle.Screen()
 
ht()
scene.setup(width=0.5, height=1.0, startx=-1, starty=0)
exitonclick()
# width vraie dimension si entier, proportion de l'écran si décimal
# startx entier, position par rapport à la gauche de l'écran si positif, par rapport à la droite si négatif
</source>