Afficher Turtle

Identification

Infoforall

2 - Séquentialité avec Turtle


Bon, la console c'est sympa mais c'est un peu lassant lorsqu'on est habitué à de belles animations graphiques. L'intérêt de la console, c'est la rapidité et la simplicité.

Voyons maintenant un peu comment créer quelques dessins facilement avec l'un des modules les plus courants de Python dans l'apprentissage de la programmation : le module Turtle qui va vous permettre de vous mettre à la place d'une tortue qui dessine.

Logiciel nécessaire pour l'activité : Python 3 : Thonny, IDLE ou le site repl.it ...

Evaluation ✎ : questions 02-03-04

Résumé : Version HTML ou imprimable ou ou PDF (couleur ou gris)

1 - Module Turtle

La séquentialité est une notion fondamentale : vous devez impérativement comprendre que lorsqu'on fournit un code comportant plusieurs lignes à un ordinateur, il ne les exécute pas au hasard.

Non, il les exécute ligne par ligne et vous avez même vu dans l'activité précédente que sur une même ligne, il fait des choix car certains opérateurs sont prioritaires sur les autres.

Pour travailler sur la séquentialité, le mode interactif de la console est merveilleux : on ne peut rentrer qu'une instruction à la fois.

Vous allez donc aujourd'hui dessiner un peu, en expliquant à la machine ce qu'elle doit faire, étape par étape, instruction par instruction.

01° Utiliser les instructions suivantes une à une pour visualiser leurs effets.

Instruction n°1

>>> import turtle as trt

✱ En interne : importe dans l'interpréteur et en mémoire les codes permettant de créer la tortue.

✱ Visuellement : rien.

Instruction n°2

>>> crayon = trt.Turtle()

✱ En interne : on crée une variable crayon et on y place un objet-dessin basé sur le module Turtle.

✱ Visuellement : ouvre une fenêtre graphique et y place une flèche orientée vers la droite : la flèche symbolise le crayon.

Instruction n°3

>>> crayon.right(90)

✱ En interne : on agit sur crayon.

✱ Visuellement : la flèche tourne de 90° vers la droite.

Instruction n°4

>>> crayon.right(90)

✱ Visuellement : idem, on tourne de 90° vers la droite.

Instructions n°5

>>> crayon.forward(50) >>> crayon.forward(100) >>> crayon.forward(-150)

✱ En interne : on agit sur l'objet-crayon.

✱ Visuellement :

  • la flèche avance de 50 pixels dans le sens indiqué et trace un trait noir.
  • la flèche avance de 100 pixels et trace un trait noir.
  • la flèche recule de 150 pixels par rapport au sens indiqué, et trace un trait noir.

Instructions n°6

>>> crayon.pencolor('red') >>> crayon.forward(50)

✱ En interne : on change la couleur du crayon.

✱ Visuellement : on avance en traçant en rouge

Instructions n°7

>>> crayon.penup() >>> crayon.forward(-200) >>> crayon.pendown() >>> crayon.forward(200)

✱ En interne : on empêche l'objet de tracer des traits (symboliquement, on lève la pointe du crayon virtuel.

✱ Visuellement : on recule sans faire de nouvelle trace

✱ En interne : on permet à nouveau à l'objet de tracer des traits (symboliquement, on abaisse la pointe du crayon virtuel sur la feuille.

✱ Visuellement : on avance en traçant un trait

Instructions n°8

>>> crayon.clear()

✱ Visuellement : on fait disparaître les traits créés par l'objet nommé crayon.

Instructions n°9

>>> crayon.home()

✱ Visuellement : on ramène le crayon au centre et on le replace en orientation vers la droite. Comme le crayon était 'posé', il a dessiné un trait.

✎ 02° Dessiner (avec "crayon" déclaré) un carré de 200 pixels de côté en utilisant une séquence d'instructions précises et ordonnées. Les couleurs des côtés devront être red, pink, blue et orange.

...CORRECTION...

>>> crayon.clear() >>> crayon.penup() >>> crayon.home() >>> crayon.pendown() >>> crayon.pencolor('red') >>> crayon.forward(200) >>> crayon.right(90) >>> crayon.pencolor('pink') >>> crayon.forward(200) >>> crayon.right(90) >>> crayon.pencolor('blue') >>> crayon.forward(200) >>> crayon.right(90) >>> crayon.pencolor('orange') >>> crayon.forward(200) >>> crayon.right(90)

✎ 03° Le dessin serait-il le même si on traçait les instructions dans un ordre aléatoire ?

Cette notion de séquence d'exécution est évidente ici puisqu'on tape les instructions une à une. Par contre, il faudra vous en souvenir lorsque nous commencerons à faire de vrais programmes : on doit placer les instructions dans l'ordre logique voulu pour réaliser les tâches demandées.

Quelques commandes disponibles 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.

Pour tourner à gauche : crayon.left(45) permet de tourner de 45° à gauche.


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


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 modifier la vitesse x, x variant de 1 à 10 : crayon.speed(x), x=0 veut dire pas d'animation.


Pour lever la pointe du crayon : crayon.penup().

Pour abaisser la pointe du crayon : crayon.pendown().

Pour changer la couleur du crayon : crayon.pencolor("red").

Pour augmenter la taille du crayon : crayon.pensize(5).

Cela nous suffira mais vous pouvez aller voir la documentation Python pour voir ce que le module peut faire d'autre : DOCUMENTATION TURTLE PYTHON.

✎ 04° Utilisez le temps qu'il vous reste pour réaliser le dessin le plus sympa possible.

Il existe notamment la possibilité de définir une couleur de remplissage avec crayon.fillcolor("yellow").

De signaler de commencer à gérer les traits comme faisant partie d'une forme à remplir : crayon.begin_fill().

De signaler la fin de la zone à remplir : crayon.end_fill().

Un exemple rapide :

>>> crayon.fillcolor("yellow") >>> crayon.begin_fill() >>> crayon.circle(50) >>> crayon.end_fill()

Nous allons réutiliser Turtle un peu plus loin dans le cours car il permet vraiment de tester certaines choses et de rendre visuellement le résultat du code.

Ici, j'espère qu'il vous a permis de 'visualiser' que l'ordre des instructions est important.

2 - FAQ

Rien pour le moment

Activité publiée le 01 11 2020
Dernière modification : 26 11 2020
Auteur : ows. h.