TP 1 – Turtle

La bibliothèque turtle est un ensemble d’outils permettant de dessiner à l’aide d’instructions simples.

Pour l’utiliser, il faut commencer par l’une des instructions suivantes :

from turtle import *

import turtle as tortue

(voir exemple pour la différence des deux imports)

Vous allez déplacer une petite tortue afin de tracer des figures géométriques.
Pour un descriptif exhaustif des fonctionnalités, n’hésitez pas à consulter la doc : http ://docs.python.org/3.2/library/turtle.html.

Déplacements de la tortue :

  • forward(d) : fait avancer la tortue de d (en pixel), le trait est dessiné si le crayon est baissé. Peut être abrégé en fd(d) ;
  • backward(d) : fait reculer la tortue de d (en pixel), le trait est dessiné si le crayon est baissé. Peut être abrégé en bk(d) ;
  •  left(a) : fait pivoter la tortue d’un angle de a degrés vers la gauche. Peut être abrégé en lt(a) ;
  • right(a) : fait pivoter la tortue d’un angle de a degrés vers la droite. Peut être abrégé en rt(a) ;
  • goto(x,y) : la tortue va se positionner au point de coordonnées ( x ; y );
  • circle(r) : trace un cercle de rayon r, le point de départ de la tortue appartient au cercle (attention il n’est pas centré sur la position de la tortue);
  • circle(r,s) : trace une portion du cercle correspondant à s degrés ;
  • dot(d,c) : dessine un disque de diamètre d et de couleur c là où est la tortue ;
  • setheading(a): où a est en degrés,  permet de fixer un cap absolu à la tortue.

Contrôle du crayon :

  • up() : lève le crayon ;
  • down():baissele crayon;
  • pensize() ou width() : fixe la largeur du trait (en pixel);
  • reset() : nettoie la fenêtre de dessin, réinitialise la tortue; elle est située alors au centre de l’écran de dessin tournée vers la droite.
  • pencolor(c) : la couleur par défaut est le noir, on peut la changer en mettant une couleur prédéfinie « red », « green », « blue », « yellow », . . . ;
  • color(c1,c2) : modifie la couleur du trait c1 et la couleur du remplissage c2. On peut aussi les modifier séparément avec pencolor(c) et fillcolor(c).
  • les instructions begin_fill() et end_fill() permettent de commencer et de terminer le remplissage d’une figure géométrique.
  • write(texte) texte doit être une chaîne de caractères délimitée avec des  » ou des ‘

Avec ces quelques instructions il est déjà possible de faire des choses intéressantes.

Voici deux exemples à tester :

from turtle import *
speed(1)
a = 0
while a < 12:
    a = a + 1
    forward(150)
    left(150)

Avec une autre façon d’importer un module.

import turtle as tortue

tortue.speed(1)
for i in range(6):
    tortue.fd(100)
    tortue.rt(360/6)


Partie 1, un triangle :

Exercice 1 :

Écrivez un programme qui trace un triangle équilatéral de côté 100.

Exercice 2 :

Maintenant écrivez une fonction triangle(n) qui dessine un triangle de côté n.
triangle(100) devrait produire le même résultat que dans l’exercice 1.

Exercice 3 :

Modifiez la fonction précédente, pour obtenir la fonction triangle(angle, n) qui permet de tracer un triangle équilatéral de côté n et d’orientation angle.

Par exemple avec triangle(30, 100) vous devez obtenir :


Partie 2, des carrées :

Exercice 1 :

Écrivez une fonction carre(n) qui trace un carre de côté n. La tortue doit terminer son trajet en étant dans la même position qu’au départ.

Exercice 2 :

Écrivez une fonction plusieurs_carres(n) qui permet de tracer n carrés côte à côte. Bien sur, cette fonction doit faire appel à la fonction créer dans l’exercice précédent.
(laissez 10px entre chaque carré)

 

Partie 3, des triangles et des carrés :

Exercice 1 :

En vous aidant des deux parties précédentes, écrivez un programme qui produit la figure suivante :

Exercice 2 :

En vous aidant des deux parties précédentes, écrivez un programme qui produit la figure suivante :

 


Partie complémentaire,  le flocon de Von Koch :

Cette figure a été imaginée par le mathématicien suédois Niels Fabian Helge von
Koch, afin de montrer que l’on pouvait tracer des courbes continues en tout point, mais dérivables en
aucun.
Le principe est simple : on divise un segment initial en trois morceaux, et on construit un triangle
équilatéral sans base au-dessus du morceau central. On réitère le processus n fois, n étant appelé
l’ordre.

Voici ce que cela donne aux ordres 0, 1, 2 et 3 :

Si on trace trois fois cette figure, de façon à la refermer on obtient :

Exercice 1 :

Écrivez une fonction koch_0(l) qui trace l’ordre 0 et koch_1(l) qui trace l’ordre 1.

Exercice 2 :

Écrire la fonction koch_n(l, n) qui trace l’ordre n.