7. Cloner - Turtle

Dans Programmation I nous avons fait connaissance avec un style de programmation que nous appelons programmation procédurale. Dans cette deuxième partie, nous allons découvrir un nouveau style de programmation qui s’appelle programmation orientée objet.

Le premier changement que nous allons voir est que nous pouvons créer des tortues à volonté. Jusqu’à maintenant nous avons travaillé avec une seule tortue. Dès maintenant nous allons créer autant de tortues que nous voulons. Les tortues sont des objets dérivés de la classe Turtle. Nous allons voir que :

  • la classe Turtle permet de produire multiples tortues,

  • la ligne de code bob = Turtle() crée une nouvelle tortue appelée bob,

  • la méthode bob.clone() crée un clone de la tortue bob.

Question

L’expression ana = bob.clone() crée




7.1. Reproduire des tortues

Jusqu’à maintenant, nous avons utilisé une seule tortue. Mais nous pouvons en créer autant que nous voulons. Chaque tortue possède sa couleur, sa position, son orientation, sa vitesse, sa forme, etc. Dans le programme suivant nous créons une tortue ana, une tortue bob et une tortue mia.

Exercice 1

Créez encore une autre tortue, choisissez sa couleur et faites la bouger quelque part.

7.2. La course des tortues

Dans le programme ci-dessous deux tortues, Ana et Bob, font la course.

On crée d’abord la tortue ana qui est la tortue par défaut getturtle() et on configure

  • sa forme

  • sa vitesse

  • sa couleur

  • son épaisseur de trait

Ensuite nous faisons une copie identique avec ana.clone().

Pour les faire bouger, vous devez appuyer sur les touches

  • a pour faire avancer ana (rouge).

  • b pour faire avancer bob (bleu).

7.3. Méthodes Turtle

La fonction dir() permet d’afficher toutes les méthodes que possède la classe Turtle. Il y en a environ 72 et vous en connaissez déjà une grande partie.

Dans la liste de compréhension, nous excluons les méthodes spéciales qui commencent avec un tiret bas _ et affichons toutes les méthodes pour un objet Turtle.

Les 4 méthodes de mouvement et leurs raccourcis

  • forward, fd - avancer

  • backward, back, bk - reculer

  • left, lt - tourner à gauche

  • right, rt - tourner à droite

Les méthodes pour colorier

  • begin_fill, end_fill - pour entourer la forme à remplir

  • color - les 2 couleurs (ligne et remplissage)

  • colormode - le mode (1 ou 255)

  • pencolor - couleur de ligne

  • fillcolor - couleur de remplissage

Les méthodes de dessin

  • dot - dessiner un point

  • circle - dessiner un cercle

  • stamp - dessiner un tampon de la tortue

  • write - écrire un texte

Les méthodes d’initialisation

  • clear - effacer les traces

  • home - retourner à l’origine

  • reset - réinitialiser la tortue

Les méthodes de la tortue

  • shape - choisir la forme

  • speed - choisir la vitesse

  • width, pensize - épaisseur du trait

  • hideturtle, ht - masquer la tortue

  • showturtle, st - afficher la tortue

  • down, pendown, pd - baisser le stylo

  • up, penup, pu - lever le stylo

  • isdown, isvisible, fill - info sur l’état (True/False)

  • clone - créer une copie de la tortue

Les méthodes de position et leurs raccourcis

  • position, pos - lire la position

  • setposition, setpos, goto - changer la position

  • xcor, ycor - lire une coordonnée

  • setx, sety - changer une coordonnée

  • towards, heading - lire l’orientation

  • setheading, seth - changer l’orientation

  • distance - distance vers une tortue

  • degrees, radians - choisir l’unité

Les méthodes pour trouver la référence aux objets

  • getpen, getturtle - objet tortue

  • getscreen - objet écran

Les méthodes pour la taille de la fenêtre

  • window_height

  • window_width

Les méthodes pour définir les fonctions de rappel

  • onclick - cliquer la tortue

  • ondrag - tirer la tortue

  • onrelease - relâcher la tortue

La méthode pour entrer dans la boucle principale

  • done, mainloop

Les méthodes pour contrôler l’animation de la tortue

  • delay - délai entre les animations

  • tracer - activer ou désactiver l’animation

  • update - redessiner la scène

Prudence

Si vous exécutez ce code directement en Python avec un éditeur externe comme Thonny, vous constatez un nombre bien plus élevé d’objets (plus que 130).

Ceci est dû au fait que dans ce site votre code est traduit en JavaScript et exécuté par Skulpt directement dans votre navigateur. Le module en JavaScript ne traduit pas tous les objets, mais les méthodes essentielles sont toutes présentes.

7.4. Une tortue texte

Nous allons maintenant introduire une deuxième tortue qui sera responsable uniquement pour écrire du texte. L’expression text = Turtle() crée une nouvelle tortue appelée text. Pour appeler des méthodes sur cette nouvelle tortue nous devons utiliser la méthode dotée, donc précéder les instructions par text.

Exercice 2

Ajoutez une fonction de rappel pour faire tourner la tortue.

7.5. Bouger deux tortues

Nous pouvons utiliser des fonctions de rappel pour faire bouger les deux tortues à l’aide des touches du clavier.

La fonction clone() permet de cloner la tortue ana. La nouvelle tortue est un objet séparé qui sera initialisé avec les bonnes valeurs pour la forme et la vitesse. Pour bob il faudra juste changer sa couleur en bleu.

7.6. Créer en boucle

Dans l’exemple suivant, nous allons créer 10 tortues à des positions aléatoires, avec des couleurs aléatoires.

Appuyer sur la touche espace fait les avancer de 10 pixels. La fonction s.turtles() renvoie une liste de toutes les tortues créées. Dans une boucle nous déplaçons chaque tortue de 10 pixels.

7.7. Créer par un clic

Dans l’exemple suivant, nous créons des tortues en cliquant avec la souris.

La stratégie adopte est de crée une première tortue cachée au centre qui a les propriétés suivantes:

  • forme de tortue

  • vitesse maximale

  • stylo levé

À chaque clic de souris, cette tortue invisible au centre est clonée. Il suffit alors de la colorier, placer, orienter et montrer.

Appuyer sur la touche espace fait les avancer de 10 pixels.

7.8. Une tortue parmi 10

Dans l’exemple suivant, nous allons créer 10 tortues à des endroits aléatoires. Cliquer sur une des tortues, change sa couleur en rouge et la rend active. Son déplacement peut être contrôlé par les touches flèches.

7.9. Exercice

La course

Dans la course des tortues :

  • ajoutez une ligne de départ une ligne d’arrivé,

  • affichez le nom du gagnant,

  • affichez le temps utilisé,

  • affichez les clics par seconde