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.

Logiciel nécessaire pour l'activité : Thonny

Evaluation ✎ : un seul code à fournir. Celui de votre dessin.

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.setposition(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.

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
  • +6 à +0 : Qualité/Complexité du dessin

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

Maintenant que nous avons vu comment créer un programme, nous allons voir dans les activité suivantes comment parvenir à stocker des informations rentrées au clavier par l'utilisateur et comment répondre différemment en fonction de sa réponse. Il s'agit des conditions exprimées avec un IF (SI en français).

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