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 de turtle

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

Méthode

Paramètre

Description

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

pendown()

aucun

Tire le stylet vers le bas et dessine

up()

aucun

Tire le stylet vers le haut

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.

LES COULEURS

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 tuplede r, g et b, qui représentent une couleur RVB, et chacun de r, g et b sont dans la plage 0..colormode,   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..colormode.

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

.

Réglage de la fenêtre :

setup(500,400)

construit une fenêtre de 500 pixels de largeur et de 400 pixels de hauteur.

title("Education du numérique")

Le titre de la fenêtre devient : Education du numérique

bgcolor("light blue") 

Le fond de la fenêtre devient bleu clair.

bgpic("gare_limoges.png")

L’image de la gare de limoges devient le fond de la fenêtre.

Commande 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

Code

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

Commande

Explication

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).

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

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

Le code pour l’affichage

Le code

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/turtle03.png

Les Figures

Le code

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/turtle03.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.

Commande

Explication

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

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)

Les Polygones réguliers

La commande circle permet de tracer des polygones réguliers. Des octogones, des triangles, des carrés…

.

Les commandes d’affichage :

Commande retour
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.

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 les points

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

SE DEPLACER

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.

Commande

Explication

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

.

Les triangles , les carrés, les parallélogrammes

Exemples de code pour les figure de base.

Le code pour un carré Le 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 triangle Le 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
Le code pour un parallélogramme Le 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és et triangles allignés

Des carrés Une suite de triangles et de carrés
_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 et une spirale de figures

Une spirale Une 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

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

Un losange.

Un rectangle.

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

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.

Un arbre

Un arbre ,le code l’image

#Affiche un 'largeur d'abord-arbre' - en revanche
#aux programmes classiques de dessin d'arborescence Logo,
#qui utilisent un algorithme de profondeur d'abord.

#Les usages:
#(1) un arbre-générateur, où le dessin est
#quasi l'effet secondaire, alors que le générateur
#donne toujours Aucun.
#(2) Clonage de tortue : à chaque point de ramification
#le stylet actuel est cloné. Donc au final
#il y a 1024 tortues.

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

Une lettre

Une lettre ,le code 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

Une étoile

Une étoile ,le code 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()

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

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