Le module turtle

L’une des grandes qualités de Python est qu’il est extrêmement facile de lui ajouter de nombreuses fonctionnalités par importation de divers modules. Pour illustrer cela, et nous amuser un peu avec d’autres objets que des nombres, nous allons explorer un module Python qui permet de réaliser des « graphiques tortue », des dessins géométriques correspondant à la piste laissée derrière elle par une petite « tortue » virtuelle, dont nous contrôlons les déplacements sur l’écran de l’ordinateur à l’aide d’instructions simples.


Fonctions turtle

Fonctions turtle

turtle est une fonctionnalité Python comme une planche à dessin, qui nous permet de commander à une turtle de dessiner partout.

Turtle()
aucun Crée et renvoie un objet turtle
forward()
quantité Déplace la turtle vers l’arrière de la quantité spécifiée
backward()
quantité Déplace vers l’arrière en fonction de la distance.
right()
angle Tourne turtle à droite
left()
angle Tourne turtle à gauche
penup()
aucun Pas de dessin lors du déplacement
penddown()
aucun Tire le stylet vers le bas et dessine
up()
aucun Tire le stylet vers le haut
down()
Paramètres Tire le stylet vers le bas
position()
aucun
Renvoie la position actuelle de la tortue (x,y), sous la forme d’un vecteur
pos()=(0.00, 240.00)
goto()
x et y Déplacez turtle vers une position absolue.
dot()
aucun Laissez le point à la position actuelle
stamp()
aucun Laisse une impression de forme de turtle à l’emplacement actuel
shape()
nom de la forme Devrait être “flèche”, “classique”, “turtle” ou “cercle”

Commandes d’affichage

L’une des grandes qualités de Python est qu’il est extrêmement facile de lui ajouter de nombreuses fonctionnalités par importation de divers modules. Pour illustrer cela, et nous amuser un peu avec d’autres objets que des nombres, nous allons explorer un module Python qui permet de réaliser des « graphiques tortue », des dessins géométriques correspondant à la piste laissée derrière elle par une petite « tortue » virtuelle, dont nous contrôlons les déplacements sur l’écran de l’ordinateur à l’aide d’instructions simples.


Les couleurs

  • Renvoie ou définit la couleur du stylo et la couleur de remplissage.

  • Arguments: Plusieurs formats d’entrée sont autorisés.Ils utilisent 0, 1, 2 ou 3 arguments comme suit

    color()
    
  • Renvoie la couleur de stylo actuelle et la couleur de remplissage actuelle sous la forme d’une paire de chaînes de spécification de couleur telles qu’elles sont renvoyées par pencolor et fillcolor. couleur(chaîne de couleurs), couleur((r,g,b)), couleur(r,g,b)

    color(colorstring), color((r,g,b)), color(r,g,b)
    

    entrées comme dans pencolor, définissez les deux, fillcolor et pencolor, à la valeur donnée. couleur (chaîne de couleurs1, chaîne de couleurs2), couleur((r1,g1,b1), (r2,g2,b2))

  • équivalent à pencolor(colorstring1) et fillcolor(colorstring2) et de manière analogue, si l’autre format d’entrée est utilisé.

  • Si la forme de turtle est un polygone, le contour et l’intérieur de ce polygone est dessiné avec les couleurs nouvellement définies. Pour plus d’informations, voir: pencolor, fillcolor

    pencolor()
    
  • Renvoie la couleur de stylo actuelle en tant que chaîne de spécification de couleur, éventuellement au format hexadécimal (voir exemple). Peut être utilisé comme entrée pour un autre appel color/pencolor/fillcolor.

  • pencolor(colorstring) est une chaîne de spécification de couleur Tk, telle que « rouge » ou « jaune »

    pencolor((r, g, b))
    
  • un tuple de r, g et b, qui représentent une couleur RVB, et chacun de r, g et b sont dans la plage colormode, où colormode vaut 1.0 ou 255 pencolor(r, g, b) r, g et b représentent une couleur RVB, et chacun de r, g et b sont dans la gamme 0

  • Si la forme de tortue est un polygone, le contour de ce polygone est dessiné avec la nouvelle couleur de stylo.

    fillcolor()
    
  • la couleur de remplissage(). Renvoie la couleur de remplissage actuelle en tant que chaîne de spécification de couleur, éventuellement au format hexadécimal. Peut être utilisé comme entrée pour un autre appel ;

    color pencolor fillcolor
    


Le repère dans la fenêtre

Pour pouvoir se repérer dans la fenêtre, turtle utilise un repère à deux dimensions. Il est centré au milieu de la fenêtre. Ce repère permet de se déplacer en abscisses et en ordonnées .Le centre du repère, est le point ( 0, 0). C’est le point de départ de toute les fonctions.


Réglage de la fenêtre

script retour
from turtle import *
#fenetre : Largeur : 600px, Hauteur : 150px
setup(600, 150)
#Change le titre de la fenetre
title("Education du numérique")
#Met l'image en fond de la fenêtre 
bgcolor("light blue")
_images/turtle001.PNG


Le code pour un fond avec une image

script Résultat
from turtle import *
#fenetre : Largeur : 600px, Hauteur : 500px
setup(600, 500)  
 #Change le titre de la fenetre
title("Gare de Limoges") 
#Met l'image en fond de la fenêtre
bgpic("gare_limoges.png")  
_images/turtle002.PNG


Les commandes d’affichage

Commandes Explications
up()
Relève le pointeur
down()
Repose le pointeur
hidleturtle()
Cache le pointeur
showturtle()
Affiche le pointeur
goto(100,100)
Déplace le pointeur de 100 pixels vers la droite et de 100 pixels vers le bas
with(3)
Trace une ligne de 3 pixels de largeur.
dot(10,'red')
Trace un point de 10 pixels de diamètre de couleur “red” (rouge).

Note

write('B(-150;-200)',font = ("Arial", 15, "bold"),align='right')
# align : right: droite; left : gauche ; center : centre

Ecrit sur le point B(-150;200) avec la police Arial , 15 : dimension , bold :gras.


Le code pour l’affichage

script Résultat
from turtle import*
setup(600,500)
title("Commandes d'affichage")
bgcolor("light blue")
width(3)
write("point de départ")
color('red')
goto(-150,200)
write('B(-150;200)',font=("Arial",12,'italic'),align='center')
up()
color("green")
goto(200,-100)
down()
write("Point d'arrivée")
_images/turtle005.PNG


Les Figures

script Résultat
from turtle import *
setup(600, 500)  #fenetre : Largeur : 600px, Hauteur : 500px
title("repère dans la fenêtre")  #Change le titre de la fenetre
bgcolor("light blue")  #Met le fond de la fenêtre en bleu clair
width(1)# largeur en pixels des traits
#write : écrire ; font : la polise utilisée ; align : position
write('(0;0)',font = ("Arial", 15, "bold"),align='right')
dot(10,'black')#dot:le point de diamètre 10 px et de couleur noire
color('red') # couleur des objets
goto(-200,0) # déplacement vers le point(-200;0)
dot(10,'black')
write('(-200;0)',font = ("Arial", 15, "bold"),align='center')
up()
color('yellow')
goto(0,-200)
down()
dot(10,'black')
write('(0;-200)',font = ("Arial", 15, "bold"),align='right')
goto(0,200)
write('(0;200)',font = ("Arial", 15, "bold"),align='right')
dot(10,'black')
up()#up : on relève le pointeur  et on ne trace rien
color('red')
goto(200,0)
down()
#dot : point de diamètre 10 pixels et la couleur est en noir;
dot(10,'black')
write('(200;0)',font = ("Arial", 15, "bold"),align='center')
goto(0,0)
_images/turtle003.PNG


Les cercles

Pour tracer des cercles avec turtle, il sufit d’utiliser la commande circle. On peut tracer un cercle complet ou un arc de cercle. Pour un arc de cercle il suffit d’indiquer la mesure de l’angle en degré pour afficher l’arc que l’on veut. Les exemples suivants indiquent toutes les possibilités.

circle
   
circle(200)
Construit un cercle de 200 pixels de rayon
circle(200,180)
Construit un demi-cercle de 200 pixels de rayon
circle(200,90)
Construit un arc de cercle de 90 °.
Le code pour un cercle de rayon de 200 pixels. Résultat
from turtle import *
setup(600, 500)  
title("Tracer des cercles") 
bgcolor("light blue")
#centre du cercle
dot(10,'black')
up()
goto(0,-200)
down()
color('red')
width(3)
#cercle de 200 pixels de rayon
circle(200)
_images/turtle007.PNG
Le code pour des arcs de cercles vidéo

Le code pour des arcs de cercles

Vidéo

from turtle import *
setup(600, 500)  
title("Tracer des arcs de cercles") 
bgcolor("light blue")
#centre du cercle
dot(10,'red')
color('black')
write('(0;0)',font = ("Arial", 12, "italic"),align='right')
color('red')
width(3)
up()
goto(100,0)
write('180°',font = ("Arial", 12, "italic"),align='right')
up()
goto(0,200)
down()
dot(10,'red')
color('black')
write('(0;200)',font = ("Arial", 12, "italic"),align='right')
goto(0,-200)
dot(10,'red')
write('(0;-200)',font = ("Arial", 12, "italic"),align='right')
color('black')
width(1)
circle(200)
color('red')
width(3)
#demi-cercle de 200 pixels de rayon
circle(200,180)
up()
goto(-100,-80)
color("green")
write('90°',font = ("Arial", 12, "bold"),align='right')
goto(-100,0)
down()
width(3)
goto(-100,-100)
color('black')
down()
write('(-100;-100)',font = ("Arial", 12, "italic"),align='left')
dot(10,'black')
goto(-100,0)
color('green')
circle(100,90)
goto(-100,-100)
up()
width(1)
goto(-200,-100)
down()
color('black')
circle(100)
html5 video background by EasyHtml5Video.com v4.0


Les Polygones réguliers

circle
   
circle(200,step=8)
Trace un octone de rayon de 200 pixels.
circle(100,180,steps=3)
Trace la moitié d’un hexagone.Le rayon = 100 pixels. L’angle = 180° .Nombre de segments = 3.
circle(100,steps=3)
Trace un triangle équilatèral le cercle de rayon 100 est le cercle circonscrit de ce triangle.
circle(100,steps=4)
Trace un carré dont les diagonales mesurent 200 pixels.

Polygones

Le code pour un polygone. Résultat
from turtle import *
setup(600, 500)  
title("Tracer des polygones") 
bgcolor("light blue")
#centre du cercle
dot(10,'black')
up()
goto(0,-200)
down()
color('red')
width(3)
#octogone de 200 pixels de rayon
circle(200,steps=8)
_images/turtle011.PNG
Le code pour des polygones. Résultat
from turtle import *
setup(600, 500)  
title("Tracer des polygones") 
bgcolor("light blue")
#centre du cercle
listen()
onkeypress("a")
dot(10,'black')
up()
goto(0,-200)
down()
color('red')
width(3)
#octogone
circle(200,steps=8)
up()
goto(0,-100)
down()
color('green')
#demi-hexagone
circle(100, 180,steps=3)
up()
goto(0,50)
down()
color('blue')
width(5)
#triangle équilatéral
circle(50,steps=3)
up()
goto(0,150)
down()
color('black')
#carré
circle(150,steps=4)
_images/turtle013.PNG


Les points

Pour se repérer dans la fenêtre, il faut tracer des points, la commande est dot . Le code introduit le code pour construire une boucle avec le code for et l’utilisation d’une liste avec sa longueur len

Le code pour des polygones. Résultat
from turtle import *
setup(600, 300)  
bgcolor("light blue")
title("Tracer des points") 
couleurs=['black','grey','orange','red','green','blue','gold']
for i in range(len(couleurs)):
	up()
	goto(-250+i*70,0)
	down()
	dot(10+i*2,couleurs[i])
	up()
	goto(-250+i*70,30)
	down()
	write(couleurs[i],font = ("Arial", 12, "italic"),align='center')
	up()
#cache le  pointeur
hideturtle()
_images/turtle015.PNG


Déplacement

Pour tracer des des figures avec turtle, il faut se déplacer. pour cela il faut utiliser les commandes forward et backward :

La commande forward permet d’avancer, par exemple forward(120) permet d’avancer de 120 pixels. La commande backward permet de reculer, par exemple backward(50) permet de reculer de 50 pixels.

Commandes Explications
forward(200)
Se déplace de 200 pixels en avançant.
backward(180)
recule de 180 pixels.
goto(200,90)
Va à la position (200;90).
home()
Va à la position (0;0).
right(90))
Change de direction de 90° vers la droite.
left(150))
Change de direction de 150° vers la gauche.
Le code pour un déplacement pour avancer. Résultat
#avancer.py
from turtle import *
setup(600, 500)  
bgcolor("light blue")
title("avancer") 
couleurs=['black','grey','orange','red','green','blue','gold']
up()
goto(-200,200)#position(-200;200)
down()
color("red")
width(5)
write("(-200,200)",font = ("Arial", 12, "italic"),align='center')
forward(100)#avance de 100 pixels
width(3)
color('blue')
write("(-100,200)",font = ("Arial", 12, "italic"),align='center')
forward(100)#avance de 100 pixels
width(5)
color('green')
write("(0,200)",font = ("Arial", 12, "italic"),align='center')
forward(100)#avance de 100 pixels
color('red')
write("(100,200)",font = ("Arial", 12, "italic"),align='center')	
#cache le  pointeur
hideturtle()
_images/turtle017.PNG
Le code pour un déplacement pour reculer. Résultat
#reculer.py
from turtle import *
setup(600, 500)  
bgcolor("light blue")
title("reculer") 
couleurs=['black','grey','orange','red','green','blue','gold']
up()
goto(200,200)#position(200;200)
down()
color("red")
width(5)
write("(100,200)",font = ("Arial", 12, "italic"),align='center')
backward(100)#recule de 100 pixels
width(3)
color('blue')
write("(0,200)",font = ("Arial", 12, "italic"),align='center')
backward(100)#recule de 100 pixels
width(5)
color('green')
write("(-100,200)",font = ("Arial", 12, "italic"),align='center')
backward(100)#recule de 100 pixels
color('red')
write("(-100,200)",font = ("Arial", 12, "italic"),align='center')	
#cache le  pointeur
hideturtle()
_images/turtle019.PNG


Triangle

Le code pour un triangle. Résultat
#triangle.py
from turtle import *
def triangle(taille, couleur):
	"""fonction qui dessine un triangle"""
	"""de taille et de couleur """
	color(couleur)
	c =0
	width(5)
	while c <3:
		forward(taille)
		right(120)
		c = c +1
triangle(150,'green')
_images/turtle023.PNG


Parallélogramme

Le code pour un parallélogramme. Résultat
#avancer.py
from turtle import *
setup(600, 500)  
bgcolor("light blue")
title("avancer") 
couleurs=['black','grey','orange','red','green','blue','gold']
up()
goto(-200,200)#position(-200;200)
down()
color("red")
width(5)
write("(-200,200)",font = ("Arial", 12, "italic"),align='center')
forward(100)#avance de 100 pixels
width(3)
color('blue')
write("(-100,200)",font = ("Arial", 12, "italic"),align='center')
forward(100)#avance de 100 pixels
width(5)
color('green')
write("(0,200)",font = ("Arial", 12, "italic"),align='center')
forward(100)#avance de 100 pixels
color('red')
write("(100,200)",font = ("Arial", 12, "italic"),align='center')	
#cache le  pointeur
hideturtle()
_images/turtle025.PNG


Carré

Le code pour un parallélogramme. Résultat
#_carre.py
from turtle import *
def carre(taille, couleur):
        "fonction qui dessine un carré de taille et de couleur déterminées"
        color(couleur)
        width(10)
        c =0
        while c <4:
                forward(taille)
                right(90)
                c = c +1
up()
goto(-100,200)
down()
carre(400,'blue')
up()
goto(200,100)
write('Un carré')
_images/turtle021.PNG
Le code pour un parallélogramme. Résultat
#turtle_carre.py
from turtle import *
title('educationdunumerique.fr')
setup(1050,1050)
up()
def carre(taille, couleur,large):
    #fonction qui dessine un carré de taille
    #et de couleur déterminées
	down()
	color(couleur)
	width(large)
	c =0
	while c <4:
		forward(taille)
		right(90)
		c = c +1
up()
goto(-390,430)
carre(800,'lawn green',180)
up()
up()
goto(-190,230)
carre(400,'lawn green',10)
up()
goto(-290,330)
carre(600,'lawn green',10)
up()
coul=['red','green','blue','purple1','violet','pink',
      'cyan','maroon1','light blue','red']
k=0
j=0
m=0
for i in range(20):
    if -1<i<6 :  k=i
    if 5<i<10 :
        j=i%5
    if 9 <i<16:
            j=5
            k=5-i%10
    if 15<i:
            k=0
            j=20-i
    goto(-280+(k*100),-180+(j*100))
    carre(80,coul[i%4],10)    
    up() 
goto(0,0)
write('Méthode pour\nfaire des\nCarrés',
      font = ("Arial", 45, "italic"),align='center')
_images/carre2023.png


Aligner

Aligner

Alignement de carrés. Alignement de carrés et de triangles.
_images/turtlecarre01.png _images/turtle034.png
# des carrés turtle.py
from dessin_tortue import *
up()  # relever le crayon
goto(-300, 50)  # reculer en haut à gauche
# dessiner dix carrés rouges, alignés :
i = 0
while i < 10:
	down()  # abaisser le crayon
	carre(60, 'red',epaisseur=5)  # tracer un carré
	up()  # relever le crayon
	forward(69)  # avancer + loin
	i = i +1
a = input()  # attendre
# carre triangle.py
from dessins_tortue import *
up()                # relever le crayon
goto(-220, 120)     # positionner le point de départ
tracer(0)           # ne pas traînasser

# dessiner une série de formes de + en + grandes :
i, t = 0, 50
while i < 6:
    carre(t, 'red', 0)   # tracer un carré
    forward(t )          # avancer + loin
    triangle(t, 'blue', 0)
    forward(t )          # avancer + loin
    t -= 5               # diminuer la taille
    i = i +1



Une spirale. Spirale de figures.
_images/turtle031.PNG _images/turtle033.PNG
from turtle import *
up()
goto(-120,-50)
angle = 5
distance = 60
compteur = 0
width(5)
color('green')
down()
while compteur <= 30:
    forward(distance)
    left(angle)
    compteur += 1
    angle += 2
up()
#! /usr/bin/env python

# -*- coding:Utf8 -*-

from dessins_tortue import *

up()                        # relever le crayon
goto(-100, 220)              # positionner le point de départ
tracer(0)                   # ne pas traînasser

# dessiner une série de formes de + en + petites :
i, t = 0, 65
while i < 15:
    carre(t, 'red', 0)      # tracer un carré
  
    forward(t + 10)          # avancer + loin
    etoile6(t, 'cyan', 0)
    forward(t +10)           # avancer + loin
    triangle(t, 'purple', 0)
    forward(t +10)           # avancer + loin
    etoile5(t, 'blue', 0)
    forward(t +10)           # avancer + loin

    t -= 5                  # diminuer la taille
    i = i +1


carré, losange, rectangle, parralélogamme


On peut dessiner des carrés, des losanges, des rectangles à l’aide de la fonction parallélogramme.

Losange. Rectangle.
parallelogramme(150,0,150,'red','losang')
parallelogramme(250,200,90,'green','paralelogramme')
_images/turtle027.PNG _images/turtle028.PNG


Un arbre

Un arbre

  1. Affiche un “largeur d’abord-arbre”
  2. en revanche aux programmes classiques de dessin d’arborescence Logo, qui utilisent un algorithme de profondeur d’abord.
  3. Les usages: un arbre-générateur, où le dessin est ausi l’effet secondaire, alors que le générateur donne toujours.
  4. Clonage de tortue : à chaque point de ramification le stylet actuel est cloné.
  5. Donc au final il y a 1024 tortues.
Le code d’un arbre. L’image.
from tkinter import *
from turtle import *
def tree(plist, longueur, m, change):
   #plist est une liste de stylos
   #longueur de la branche
   #m est la moitié de l'angle entre 2 branches
   #change est le facteur par lequel la branche est raccourcie      
    lst = []
    if longueur >3:          
        for p in plist:
            p.forward(longueur)
            if longueur>127:
                p.color('black')
                p.width(10)
            if 127>longueur>81:
                p.color('blue')
                p.width(5)
            if 81>longueur>51:
                p.color('orange')
                p.width(3)                       
            q = p.clone()
            p.left(m)
            q.right(m)
            lst.append(p)
            lst.append(q)                 
        for x in tree(lst, longueur*change, m, change):
            yield None
def faire():
    width(10)
    forward(30)
    p = Turtle()
    p.color('black')
    p.setundobuffer(None)
    p.hideturtle()
    p.speed(0)
    p.getscreen().tracer(30,0)
    p.left(90)
    p.width(20)
    p.penup()
    
    p.forward(-210)
    p.pendown()
    t = tree([p], 200, 65, 0.6375)
    for x in t:
        pass
title('educationdunumerique.fr')
bgcolor('bisque')
faire()
mainloop()
_images/arbret.png


left, right

Gauche, droite. L’image.
from turtle import *
import math
def lanterne(l):
   down()
   width(10)
   left(90)
   color('cyan')
   forward(l)
   right(90)
   forward(l)
   right(90)
   forward(l)
   right(90)
   forward(l)
   right(135)
   color('green')
   forward(l * math.sqrt(2))
   left(90)  
   forward(l * math.sqrt(2) / 2)
   left(90)
   color("red")
   forward(l * math.sqrt(2) / 2)
   left(90)
   forward(l * math.sqrt(2))
   right(45)

bgcolor('bisque')
goto(-100,-100)
lanterne(200)
ht()
exitonclick()
_images/turtle201.png


beguin_fill

Gauche, droite. L’image.
from turtle import *
title('educationdunumerique.fr')
setup(1000,1000)
up()
bgcolor('yellow green')
goto(-250,-000)
width(10)
down()
color('red', 'yellow')
begin_fill()
i=9
while i!=0:
    forward(600)
    left(200)
    i=i-1
end_fill()
done()

_images/neuf.png


turtle forward

turtle graphique est une manière bien connue et intuitive pour initier les enfants au monde de la programmation. Un tel module faisait partie initialement du langage de programmation Logo créé par Wally Feurzig et Seymout Papert en 1967.

Imaginez un robot sous forme de tortue partant au centre (0, 0) d’un plan cartésien x-y. Après un import turtle, exécutez la commande turtle.forward(15) et la tortue se déplace (sur l’écran) de 15 pixels en face d’elle, en dessinant une ligne.

Turtle star

turtle permet de dessiner des formes complexes en utilisant un programme qui répète des actions élémentaires.

La vidéo Le code de l'application

from turtle import *
setup(850,850)
bgcolor('linen')
up()
goto(-300,-300)
width(4)
down()
color('red', 'linen')
begin_fill()
liste=[]
while True:
    forward(150)
    left(150)
    liste.append(int(abs(pos())))    
    if  len(liste)>11 :  
            up()
            break
color('green', 'linen')
goto(200,300)
liste=[]
while True:
    down()
    forward(190)
    right(150)
    liste.append(int(abs(pos())))
    if  len(liste)>11 :            
            up()
            break
color('black', 'linen')
liste=[]
goto(-300,-30)
while True:
    down()
    forward(150)
    left(150)   
    liste.append(int(abs(pos())))    
    if  len(liste)>11:
            up()
            break        
color('blue', 'linen')
liste=[]
goto(-50,0)
while True:
    down()
    forward(150)
    left(150)  
    liste.append(int(abs(pos())))    
    if  len(liste)>11:
            up()
            break
color('black', 'linen')
liste=[]
goto(200,-300)
while True:
    down()
    forward(150)
    left(150)   
    liste.append(int(abs(pos())))    
    if  len(liste)>11:
            up()
            break
color('dark cyan', 'linen')
liste=[]
goto(-200,300)
while True:
    down()
    forward(150)
    left(150) 
    liste.append(int(abs(pos())))    
    if  len(liste)>11:
            up()
            break
color('pale green', 'white')
liste=[]
goto(-300,200)
while True:
    down()
    forward(150)
    left(150)
    liste.append(int(abs(pos())))    
    if  len(liste)>11:
            up()
            break          
color('tan', 'linen')
liste=[]
goto(-30,130)
while True:
    down()
    forward(105)
    left(-50)
    liste.append(int(abs(pos())))    
    if  len(liste)>11:
            up()
            break
end_fill()
done()
Une toiture :
_images/turtle036.PNG


forward

Déplacez la tortue vers l’avant de la distance spécifiée. Alias : vers l’avant | fd Argument : distance – un nombre (entier ou flottant)

left(90)

Permet de tracer un carré en quatre fois.

left(120)

Permet de tracer un triangle en trois fois.

Vidéo
html5 video streaming by EasyHtml5Video.com v4.0

Le code de l’application

#04carre-triangle.py
from turtle import *
def triangle(i):
    col=["misty rose","salmon","aquamarine","khaki","tan","pink","plum","bisque",
         "pale green","turquoise","green yellow","coral","salmon"]
    width(30)
    color(col[i])
    for j in range(3):
        forward(125)
        left(120)
k=2
bgcolor('beige')
up()  # relever le crayon
setup(1850,1000)
hauteur=263
largeur=-340
goto(-390,-380)
width(45)
color("beige")
for j in range(4):
    forward(820)
    left(90)
color("blue","khaki")    
down()
#trace un carré
for j in range(4):
    forward(820)
    left(90)
up()
goto(largeur, hauteur)  # reculer en haut à gauche
# dessiner 12 triangles de plusieurs couleurs
i = 0
j=0
while i < 25:
    # abaisser le crayon   
    down()
    # tracer un triangle
    if i%2==1:
        triangle(j)
        j=j+1
    up()  # relever le crayon
    forward(145)  # avancer + loin
    i = i +1  
    if i%5==0:    
        hauteur=hauteur-150
        goto(largeur, hauteur)
color("blue","khaki")        


hideturtle

Exemple de modification d’une application

La commande forward permet d’avancer, par exemple forward(120) permet d’avancer de 120 pixels. La commande backward permet de reculer, par exemple backward(50) permet de reculer de 50 pixels.

Commande

Explication

clock

horloge analogique indiquant l’heure de votre ordinateur

speed
un nombre entier compris dans l’intervalle entre 0 et 10 inclus, ou une chaîne de vitesse .Règle la vitesse de la tortue à une valeur entière comprise entre 0 et 10 inclus. Si aucun argument n’est donné, renvoie la vitesse actuelle
hideturtle()
Rend la tortue invisible. C’est recommandé lorsque vous êtes en train de faire un dessin complexe, vous observerez alors une accélération notable.
pencolor()
Renvoie la couleur du stylo actuelle en tant que chaine de spécification de couleur ou en tant qu’un n-uplet (voir l’exemple).
pencolor(colorstring)
Définit la couleur du stylo à colorstring, qui est une chaîne de spécification de couleur Tk, elle que « red », « yellow », ou « #33cc8c »
pencolor((r, g, b))
Définit la couleur du stylo à la couleur RGB représentée par le n-uplet de r, g et b.Chacun des r, g et b doit être dans l’intervalle 0..colormode, où colormode est vaut 1.0 ou 255
pencolor(r, g, b)

Définit la couleur du stylo à la couleur RGB représentée par r, g et b. Chacun des r, g et b doit être dans l’intervalle 0..colormode.

Le code classique.

Résultat

from tkinter import *

from turtle import *
from time import perf_counter as clock, sleep
def Refaire(p, ne):
    turtlelist = [p]
    #Création de 
    for i in range(1,ne):
        q = p.clone()
        q.rt(360.0/ne)
        turtlelist.append(q)#La liste accuule les données
        p = q
    for i in range(ne):
        c = abs(ne/2.0-i)/(ne*.7)
        # Autorisation de poursuivre l'application
        # En parallèle
        for t in turtlelist:
            t.rt(360./ne)
            t.pencolor(1-c,0,c)
            t.fd(19)

def faire():
    Can = Screen()#Canvas
    bgcolor('bisque')  
    p=Turtle()
    p.speed(0)
    p.hideturtle()
    p.pencolor("red")
    p.pensize(5)
    Can.tracer(36,0)
    tem= clock()
    Refaire(p, 36)
    temp = clock()
    temps = temp-tem
    sleep(1)
    at = clock()





title('educationdunumerique.fr')
faire()
mainloop()
_images/002tuurtle.pngturtle201.png

Commande

Explication

clock

horloge analogique indiquant l’heure de votre ordinateur

speed
un nombre entier compris dans l’intervalle entre 0 et 10 inclus, ou une chaîne de vitesse .Règle la vitesse de la tortue à une valeur entière comprise entre 0 et 10 inclus. Si aucun argument n’est donné, renvoie la vitesse actuelle
hideturtle()
Rend la tortue invisible. C’est recommandé lorsque vous êtes en train de faire un dessin complexe, vous observerez alors une accélération notable.
pencolor()
Renvoie la couleur du stylo actuelle en tant que chaine de spécification de couleur ou en tant qu’un n-uplet (voir l’exemple).
pencolor(colorstring)
Définit la couleur du stylo à colorstring, qui est une chaîne de spécification de couleur Tk, elle que « red », « yellow », ou « #33cc8c »
pencolor((r, g, b))
Définit la couleur du stylo à la couleur RGB représentée par le n-uplet de r, g et b.Chacun des r, g et b doit être dans l’intervalle 0..colormode, où colormode est vaut 1.0 ou 255
pencolor(r, g, b)

Définit la couleur du stylo à la couleur RGB représentée par r, g et b. Chacun des r, g et b doit être dans l’intervalle 0..colormode.

Le code classique.

Résultat

from tkinter import *

from turtle import *
from time import perf_counter as clock, sleep
def Refaire(p, ne):
    turtlelist = [p]
    #Création de 
    for i in range(1,ne):
        q = p.clone()
        q.rt(360.0/ne)
        turtlelist.append(q)#La liste accuule les données
        p = q
    for i in range(ne):
        c = abs(ne/2.0-i)/(ne*.7)
        # Autorisation de poursuivre l'application
        # En parallèle
        for t in turtlelist:
            t.rt(360./ne)
            t.pencolor(1-c,0,c)
            t.fd(19)

def faire():
    Can = Screen()#Canvas
    bgcolor('bisque')  
    p=Turtle()
    p.speed(0)
    p.hideturtle()
    p.pencolor("red")
    p.pensize(5)
    Can.tracer(36,0)
    tem= clock()
    Refaire(p, 36)
    temp = clock()
    temps = temp-tem
    sleep(1)
    at = clock()





title('educationdunumerique.fr')
faire()
mainloop()
_images/002tuurtle.pngturtle201.png


hideturtle transformé

Le code transformer.

Résultat

from tkinter import *

from turtle import *
from time import perf_counter as clock, sleep
def Refaire(p, ne,r,g,b,taille):
    turtlelist = [p]
    #Création de 
    for i in range(1,ne):
        q = p.clone()
        q.rt(360.0/ne)
        turtlelist.append(q)#La liste accuule les données
        p = q
    for i in range(ne):
        c = abs(ne/2.0-i)/(ne*.7)
        if r!=1:
            r=0.45+i/100
        if g!=1:
            g=0.5+i/100


        if b!=1:
            b=0.55-i/120
        # Autorisation de poursuivre l'application
        # En parallèle
        for t in turtlelist:
            t.rt(360./ne)
            t.pencolor((r,g,b))
            t.fd(taille)

def faire():
    Can = Screen()#Canvas
    bgcolor('white')  
    p=Turtle()
    p.speed(0)
    p.hideturtle()
    p.pencolor("red")
    p.pensize(5)
    Can.tracer(3,0)
    tem= clock()
    Refaire(p, 50,1,0,0,27)
    temp = clock()
    temps = temp-tem
    sleep(1)
    at = clock()
   
   

title('educationdunumerique.fr')
setup(1850,1000)
faire()
mainloop()
html5 video streaming by EasyHtml5Video.com v4.0


Les exercices

Voici les exercices à faire pour apprendre la programmation en utilisant les connaissances en géométrie.

Il faut trouver le code qui permet de construire les dessins suivants:

Une étoile : Une enveloppe :
_images/turtle032.PNG _images/turtle035.PNG
Une toiture :
_images/turtle036.PNG


La galerie

_images/turtle037.PNG _images/turtle038.PNG
_images/turtle039.PNG _images/turtle048.PNG
_images/turtle040.PNG _images/turtle041.PNG
_images/turtle042.PNG _images/turtle043.PNG
_images/turtle044.PNG _images/turtle045.PNG
_images/turtle046.PNG _images/turtle047.PNG
educationdunumerique.fr. Tous  droits réservés. D Pérarnaud Limoges.