Structure

Identification

Infoforall

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 ?

  1. 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 !
  2. Vous allez utiliser des variables pour obtenir facilement des variantes d'un même dessin.
Des fleurs
Trois fleurs dessinées avec le même programme mais en modifiant les valeurs des variables

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
# 1 - Importation de modules import turtle as trt # 2 - Constantes LONGUEUR = 50 COULEUR = "red" FOND = "yellow" # 3 - Instructions du programme ("programme principal") crayon = trt.Turtle() # veut dire de créer un crayon (notez le T majuscule) # création de la première forme crayon.fillcolor(FOND) crayon.begin_fill() crayon.forward(LONGUEUR) crayon.left(90) crayon.pencolor(COULEUR) crayon.forward(LONGUEUR * 2) crayon.left(90) crayon.forward(LONGUEUR * 3) crayon.end_fill() # déplacement du crayon crayon.goto(-100,0) # création de la deuxième forme crayon.fillcolor(COULEUR) crayon.begin_fill() crayon.circle(LONGUEUR, 270) crayon.end_fill()

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
# Importation import turtle as trt # Déclaration des constantes TAILLE = 100 # Programme principal crayon = trt.Turtle() crayon.forward(TAILLE) crayon.goto(TAILLE, TAILLE) # on part en haut à droite crayon.goto(-TAILLE, -TAILLE) # on part en bas à gauche crayon.setheading(90) # pour faire pointer la tortue vers le haut crayon.forward(TAILLE*1.5)

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"
  • ...

Voici pour les activités d'introduction à la programmation. Les notions vues ici ne sont habituellement que survolées ou même totalement occultées dans les cours

Activité publiée le 16 06 2021
Dernière modification : 16 06 2021
Auteur : ows. h.