6 - Programmer un dessin
Dans cette mini-activité, nous allons utiliser le module turtle et un programme pour réaliser un dessin complexe.
La différence avec la dernière fois ?
- Vous allez avoir accès à la zone "programme" : en cas d'erreur, il suffira de relancer le programme après avoir modifié l'erreur. Inutile de tout retaper !
- Vous allez utiliser des variables pour obtenir facilement des variantes d'un même dessin.

Logiciel nécessaire pour l'activité : Thonny
Evaluation ✎ : un seul code à fournir. Celui de votre dessin. Il faudra également me montrer le résultat final en classe ou m'envoyer les images.
1 - Exemple de programme de dessin
Si vous vous souvenez bien, dessiner, c'était assez pénible en mode interactif-console : il fallait constamment retaper la même chose. Nous allons ici utiliser les deux notions fondamentales que sont les variables et les programmes.
Attention
Vous allez enregistrer votre programme en lui donnant un nom. N'utilisez pas le nom d'un des modules Python qui existent déjà : turtle, random... Sinon, vous ne pourriez plus utiliser turtle.
01° Utiliser le code suivant en ne l'enregistrant SURTOUT PAS sous le nom turtle.py ou tkinter.py.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 |
|
02° Utiliser le deuxième programme utilisant cette fois des arcs de cercle.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | # 1 - Importation de modules
import turtle as trt
# 2 - CONSTANTES
RAYON = 50
COU_1 = 'red'
COU_2 = 'blue'
EPAIS = 10
# 3 - Instructions du programme ("programme principal")
crayon = trt.Turtle() # Création du crayon 1
crayon.pensize(EPAIS)
crayon.circle(RAYON, 180)
crayon.pensize(EPAIS-2)
crayon.circle(RAYON-10, 180)
crayon.pensize(EPAIS-4)
crayon.circle(RAYON-20, 180)
crayon.pensize(EPAIS-6)
crayon.circle(RAYON-30, 180)
|
2 - Un peu de documentation ?
Voici une documentation partielle du module Turtle :
03° Lire la documentation ci-dessous pour vous remettre les instructions en mémoire.
Les commandes de bases avec Turtle
N'oubliez pas d'importer au préalable le module Turtle avec import turtle as trt.
Voici quelques méthodes qu'on peut appliquer aux objets de classe Turtle, qu'on crée à l'aide de crayon = trt.Turtle().
Pour avancer : crayon.forward(50) permet d'avancer de 50.
Pour reculer : crayon.backward(50) permet de reculer de 50.
Pour tourner à droite : crayon.right(45) permet de tourner de 45° à droite depuis l'angle actuel.
Pour tourner à gauche : crayon.left(45) permet de tourner de 45° à gauche depuis l'angle actuel.
Pour placer la tortue à un certain angle : crayon.setheading(20) permet de fixer l'angle de la tortue à 20°, sachant que 0° correspond à la tortue regardant à droite. C'est pratique pour la faire avancer dans la direction voulue si la tortue n'est pas orientée comme vous le voulez.
Déplacer le crayon
Pour aller faire un mouvement linéaire jusqu'au point de coordonnées (x,y) : crayon.goto(x,y).
Pour faire un mouvement horizontal jusqu'à atteindre la valeur donnée en x : crayon.setx(x).
Pour faire un mouvement vertical jusqu'à atteindre la valeur donnée en y : crayon.sety(y).
Pour revenir au point d'origine : crayon.home().
Par contre, attention : puisque le crayon reste posé, cela va dessiner un trait. Si vous ne voulez pas qu'on voit le trait, il suffit de lever le crayon le temps du trajet et le reposer ensuite.
Pour lever la pointe du crayon : crayon.penup().
Pour abaisser la pointe du crayon : crayon.pendown().
Dessiner autre chose qu'un trait
Pour dessiner un cercle de rayon x : crayon.circle(x).
Pour dessiner un arc de cercle d'angle a et de rayon x : crayon.circle(x,a).
Pour tracer des polygones de "rayon" x possèdant y côtés : crayon.circle(x,360,y).
Pour placer un point de rayon x et de couleur précise : crayon.dot(x,"red").
Pour écrire un texte : crayon.write"bonjour").
Modifier les propriétés du crayon
Pour modifier la vitesse x, x variant de 1 à 10 : crayon.speed(x), x=0 veut dire pas d'animation.
Pour changer la couleur du crayon : crayon.pencolor("red").
Pour augmenter la taille du crayon : crayon.pensize(5).
Pour définir une couleur de remplissage : crayon.fillcolor("yellow").
Pour remplir votre dessin d'une couleur de remplissage, c'est en trois temps :
- Pour signaler qu'on doit commencer à surveiller la surface créée : crayon.begin_fill().
- Ensuite, vous dessinez ce que vous voulez
- Pour signaler qu'on a atteint la fin de la surface et qu'il faut remplir : crayon.end_fill().
Cela nous suffira mais vous pouvez aller voir la documentation Python pour voir ce que le module peut faire d'autre : DOCUMENTATION TURTLE PYTHON.
3 - Votre dessin
✎ 04° Question finale notée : réaliser le plus beau dessin du monde avec un bon script Python. La notation tient compte des couleurs, de l'utilisation de variables et des commentaires explicatifs.
Attention, votre dessin devra pouvoir changer de taille et aucune méthode forward() ou goto() ne devra être utilisée en fournissant directement des nombres :
1
2
3
4
5
6
7
8
9
10
11
12
13 |
|
Notation
- +2 à -4 : Respect de la structure du programme
- +2 à -4 : Respect des espacements
- +2 à -4 : Utilisation de constantes
- +2 à -4 : Utilisation des variables
- +2 à -4 : Utilisation des couleurs
- +2 à -4 : Utilisation des couleurs de remplissage
- +2 à -4 : Déplacement du crayon pour réaliser le dessin
- +2 à -4 : Présence de quelques commentaires pour détailler les étapes
- +4 à -4 : Qualité/Complexité du dessin
✎ 05° Appelez le prof et montrez lui qu'on peut modifier certaines variables pour obtenir des dessins différents.
4 - FAQ
Et si on veut une couleur particulière ?
Vous n'êtes pas obligé de fournir un nom de couleur.
Vous pouvez également fournir un code RGB donnant l'intensité de Rouge, de Vert et de Bleu.
L'intensité d'une de ces couleurs doit varier de 00 (rien) à FF (intensité maximale).
Dans le code transmis, il faudra rajouter un dièse # avec les 3 séquences RGB.
Exemples :
- #FF0000 donne , du rouge intense équivalent à "red"
- #AA0000 donne , du rouge plus foncé
- #660000 donne , du rouge très foncé
- #00FF00 donne , du vert intense équivalent à "green"
- #00AA00 donne , du vert plus foncé
- #006600 donne , du vert très foncé
- #0000FF donne , du bleu intense équivalent à "blue"
- #0000AA donne , du bleu plus foncé
- #000066 donne , du blue très foncé
- #FFFF00 donne , du jaune intense équivalent à "yellow"
- ...
Activité publiée le 16 06 2021
Dernière modification : 16 06 2021
Auteur : ows. h.