Turtle

Avancer et tourner

English here!

Exercice 1 : Avancer, tourner

Clique sur , puis écris Écris le code suivant dans la zone de droite et clique sur Run !


                forward(50)
                left(90)
                forward(100)
                right(45)
            

Tu as normalement vu une tortue se déplacer vers l'avant d'une distance de 50, puis qui a tourné à gauche de 90 degrés, s'est redéplacée en avant d'une distance de 100 et finalement a tourné à droite de 45 degrés.

En français, on peut traduire forward par avancer, left par gauche et right par droite.

Essaie maintenant le code qui ne contient que la première ligne (supprime les autres), que fait-il ? N'oublie pas de cliquer sur Run. Essaie ensuite le code avec uniquement les deux premières lignes, même question. Ajoute ensuite la troisième, lance le code, comprends le comportement, ajoute la quatrième ligne, lance et comprends le comportement.

Avec tes expériences précédentes, explique, en français que fais la commande forward ? Et les commandes left et right ?

Si vous voulez avoir deux fenêtres différentes pour coder et suivre le tutoriel, cliquez sur , et ensuite dans une nouvelle fenêtre, allez sur cette page. Une manière de faire ça est de faire un clic droit sur le lien, puis de choisir ouvrir dans une nouvelle fenêtre dans le menu.

Je conseille de mettre les deux fenêtres côtes à côte, environ ⅓ de l'écran pour cette page et donc ⅔ pour le code et l'affichage de la tortue.

Exercice 2 : Raccourcis turtle

Écrire forward, c'est fatigant, il existe le raccourci fd. De même on a lt et rt qui veulent dire Left Turn et Right Turn, que l'on traduirait par tourner à gauche et tourner à droite.

Que fait ce code ?


                fd(100)
                lt(120)
                fd(100)
                lt(120)
                fd(100)
            

Et celui-ci ?


                fd(100)
                lt(180)
                fd(200)
                lt(180)
                fd(100)
                lt(90)
                fd(50 + 50) # wow, c'est joli !
                lt(90 * 2)
                fd(40 + 80 * 2)
            

Nous voyons que la tortue est une super calculette ! Bien mieux que cet objet des années 80, crois-moi.

Remarque qu'à la dernière ligne fait avancer la tortue de 200 pixels, car dans une calculette, le × se fait avant le +, et donc 40 + 80 * 2 = 40 + 160 = 200, c'est la priorité des opérations.

Formes complexes

English here!

Exercice 3 : Le carré

Maintenant, tu vas écrire le code ! Essaie de dessiner un carré de côté 80.

Un carré de côté 80

Exercice 4 : La maison

Plus difficile, une maison :

La maison

Si tu as du mal avec les angles, voici quelques schémas qui peuvent t'être utiles : (cliquez sur l'image pour passer à l'image suivante)

Quelques calculs d'angles et de longueur — cliquez sur l'image pour passer à l'image suivante

Tu peux également écrire speed(10) au début de ton code pour que la tortue aille plus vite.

Petite question, quelles lignes de code doivent changer pour que la porte soit plus haute ?

Sauve ce code dans un nouveau fichier pour pouvoir le réutiliser plus tard ! Attention à bien finir le nom par .py comme sur l'image.

Plusieurs fichiers

Crayon et couleurs

English here!

penup/pendown

Un stylo dessinant une ligne

La nouvelle commande penup(), raccourci pu() ou up(), permet de lever le crayon, ainsi la tortue peut bouger sans dessiner. Ensuite, pendown(), raccourci pd() ou down(), repose le crayon pour plus de dessins.

Que fait ce code ?


                fd(25)
                penup()
                fd(50)
                pendown()
                fd(25)
            

color

La nouvelle commande color("red") (attention aux guillemets dans "red" !) permet de changer la couleur du trait en rouge. D'autres couleurs existent par défaut comme green, blue, yellow et bien d'autres.

Pour pouvoir indiquer toutes les couleurs existantes, on regarde dans Paint :

Les composantes Rouge, Vert, Bleu d'une couleur, de 0 à 255.

Pour ce magnifique orange, j'écrirai la commande color(253, 126, 0)

Beaucoup d'outils donnent le code hexadécimal (code hexa) d'une couleur, par exemple j'ai un joli rose qui s'écrit #ff0060 qui peut s'insérer en écrivant color("#ff0060") ou color(0xff, 0x00, 0x60).


                fd(30)
                color("yellow")
                fd(30)
                color("red")
                fd(30)
                color(253, 126, 0)
                fd(30)
                color("#ff0060") # color(0xff, 0x00, 0x60)
                fd(30)
            

Remarque, si color(253, 126, 0) fait une erreur, écris colormode(255) au début de ton programme.

Ainsi, une couleur est un mélange de rouge, vert et bleu et ces composantes sont souvent affichées sous différentes formes. Prenons mon orange favori, il peut être exprimé...

Exercice 5 : Deux carrés colorés

Essaie de dessiner ceci :

Deux carrés colorés

Exercice 6 : La maison en couleurs

Ou bien tu peux colorier ta maison, la porte en rouge et le toit en vert !

La maison en couleurs

Raccourcis claviers

English here!

No one needs a mouse when editing text — Robert Vanden Eynde

La souris, c'est lent, le pad c'est encore pire — Robert Vanden Eynde

Voici selon moi les raccourcis clavier les plus importants pour éditer du texte, ceux-ci marchent même sur Facebook, vous n'êtes pas obligé de les lire mais ça permet de coder super vite croyez-moi !

Les classiques...

Symbole Utilité
←↓↑→ Les touches directionnelles (Arrow keys) déplacent le curseur.
⇧Shift Shift (Maj.) permet d'écrire un caractère de niveau 2, comme les majuscules, ou le point sur un clavier AZERTY français.
AltGr AltGr permet d'écrire un caractère de niveau 3 comme le sur un AZERTY français, on appuie dessus avec le pouce droit ( sur Mac).
⌫ Backspace Backspace (Retour Arrière) supprime le caractère à gauche.
Del Delete (Suppr.) supprime le caractère à droite (parfois ⌃Control+D parfois Fn+ sous Mac).
Enter (Entrée) passe à la ligne.

D'autres classiques...

Ctrl + Z Annuler ( + Z sur Mac).
Ctrl + C Copier ( + C sur Mac).
Ctrl + V Coller ( + V sur Mac).
Ctrl + X Couper ( + X sur Mac).
Ctrl+⇧Shift+Z Rétablir (opération inverse de Ctrl + Z) ( + + Z sur Mac).
Ctrl + Y Rétablir (opération inverse de Ctrl + Z)... dans certaines applications non basées sur Linux (càd des mauvaises applications selon mon humble opinion d'ingénieur, sujet que je peux débattre). ( + Y sur Mac).
Ctrl + F Chercher ! (Ctrl Find) ( + F sur Mac).
⇱ Home Aller au début de la ligne, peut être également combinée avec Shift pour sélectionner du texte.
⇲ End Aller à la fin de la ligne, peut être également combinée avec Shift pour sélectionner du texte.

Et maintenant, les peu connus !

Ctrl+ Mot suivant (+ sur Mac).
Ctrl+ Mot précédent (+ sur Mac).
⇧Shift+ Sélectionner un caractère vers la droite.
⇧Shift+ Sélectionner un caractère vers la gauche.
Ctrl+⇧Shift+ Sélectionner un mot vers la droite (++ sur Mac).
Ctrl+⇧Shift+ Sélectionner un mot vers la gauche (++ sur Mac).
Ctrl+ Supprimer le mot précédent (+ sur Mac), c'est très pratique pour supprimer plusieurs mots d'affilées, il suffit de maintenir Ctrl enfoncé et d'appuyer sur ⌫ Backspace plusieurs fois.
Ctrl+Del Supprimer le mot suivant (n'existe pas sur Mac), même remarque que la ligne précédente.
Double clic Sélectionne le mot sous la souris.
Triple clic Sélectionne la ligne sous la souris.

Ça marche partout même sur Facebook ! Et remarquez qu'il y a une touche Ctrl et Shift juste à côté des flèches, donc vous pouvez faire tout ces raccourcis avec uniquement la main droite !

En plus de ça, quelques raccourcis utiles quand vous éditez du code :

Ctrl+D Supprimer une ligne (Ctrl Delete) (+D sur Mac).
Ctrl+⇧Shift+D Dupliquer une ligne (++D sur Mac).
Tab ↹ Indenter les lignes sélectionnées.
⇧Shift+Tab ↹ Désindenter les lignes sélectionnées.

Ça marche aussi quand vous avez plusieurs lignes sélectionnées, ce raccourci de suppression de ligne a l'air stupide mais tu ne te doutes pas de toute la puissance cachée qu'il détient...

Et finalement d'autres ne marchant pas sur mon site mais que je conseille :

Ctrl+⇧Shift+ Déplacer la ligne vers le haut ( + + sur Mac).
Ctrl+⇧Shift+ Déplacer la ligne vers le bas ( + + sur Mac).

Et vraiment finalement, tant que j'y suis, voici mes raccourcis du navigateur internet (j'♥ les onglets) :

Ctrl + T Nouvel onglet (puis je tappe ma recherche) ( + T sur Mac).
Ctrl + L Mettre le focus sur la barre d'addresse (Ctrl Location) ( + L sur Mac).
Ctrl + W Fermer l'onglet (parfois ça m'arrive) ( + W sur Mac).
Ctrl+⇧Shift+T Ré-ouvrir le dernier onglet fermé (++T sur Mac).
Ctrl + F Chercher ! (Ctrl Find) ( + F sur Mac).
Clic milieu Sur un lien, l'ouvrir dans un nouvel onglet.
Ctrl+Clic
Clic milieu Sur un onglet, fermer l'onglet.

Et je pourrais encore parler de l'art de l'Alt-Tabbing moderne, du Control-Tabbing, du setting firefox pour l'Alt-Tabbing et son AltPageUp en main libre, du bouton Home, de la stupidité de la touche NumLock et CapsLock sous Windows, ou du déplacement furtif de fenêtres via Windows+←↓↑→.

Fonctions

English here!

Afin de réutiliser du code, on peut le mettre dans une fonction. Par exemple, je vais faire une fonction carre qui permet de dessiner un carré.


            def carre():
              fd(80)
              lt(90)
              fd(80)
              lt(90)
              fd(80)
              lt(90)
              fd(80)
              lt(90)
            

Écris le code ci-dessus et puis la nouvelle instruction carre() sera disponible ! Écris le code ci-dessous ensuite.


            carre()
            lt(45)
            carre()
            fd(50)
            carre()
            

On peut également mettre des paramètres à la fonction, grâce à ça on pourra faire varier une certaine partie du code, comme par exemple, la taille du carré.


            def carre(t): # t est la taille
              fd(t)
              lt(90)
              fd(t)
              lt(90)
              fd(t)
              lt(90)
              fd(t)
              lt(90)
            

Que l'on utilisera comme ceci :


                fd(100)
                carre(80)
                lt(45)
                carre(40)
                fd(50)
                carre(60)
            

Le paramètre t peut s'appeler comme on veut, que ça soit t, taille, x, a ou taille_cote.

On peut mettre autant de paramètres que l'on veut, séparés par des virgules, comme def carre(taille, couleur).

On peut faire des opérations mathématiques comme 50 + taille * 2 - (taille - 1), attention à la priorité des opérations !

Un petit raccourci clavier pour décaler des lignes vers la droite : sélectionnez les lignes en questions et appuyez sur Tab ↹. L'opération inverse est disponible via ⇧Shift+Tab ↹.

Exercice 8 : Modèles de maison

Le code de la maison se trouve ici, met le dans une fonction à deux paramètres pour pouvoir effectuer une maison colorée en une ligne :


                maison(40, "red")
                maison(60, "blue")
            

Les deux paramètres sont la hauteur et la couleur de la porte.

Deux maisons différentes

Boucles

English here!

Dans le code du carré, on avait quatre fois le même code à la suite :


                fd(40)
                lt(90)

                fd(40)
                lt(90)

                fd(40)
                lt(90)

                fd(40)
                lt(90)
            

Il existe une instruction qui permet de dire Répète 4 fois ce qui suit, c'est le for :


        for i in range(4):
          fd(40)
          lt(90)
        

Attention à ne pas oublier le :, de passer à la ligne et d'écrire au moins une instruction.

Quelle va être la différence avec le code suivant ? La seule différence est l'absence de quelques caractères espace mais ça change complètement le résultat. Teste le et comprends pourquoi le résultat affiché correspond bien au code.


        for i in range(4):
          fd(40)
        lt(90)
        

Exercice 9 : L'hexagone

Essaie de dessiner un hexagone, n'hésite pas à utiliser le for pour simplifier ton code !

Géométrie d'un hexagone

Exercice 10 : Des triangles

Fais une fonction triangles, qui va dessiner la forme suivante, ajoute les paramètres taille et couleur afin de pouvoir l'appeler comme ceci :

triangles(20, "red")

Utilise les boucles et cette figure peut se faire en moins de 10 lignes !

Des triangles dans un hexagone

Exercice 11 : Le village

Utilise les boucles et ta fonction maison pour créer facilement un village à deux rues comme ceci :

Un village à deux rues

Œuvre d'art

English here!

Exercice 12 : Votre œuvre d'art

Dernier défi pour ce cours, laisse aller ton imagination pour créer un beau dessin !

Voici le mien, il utilise ma fonction triangles plusieurs fois !

Un dessin avec un vélo, un arbre et des nuages

Voilà, nous avons appris à utiliser turtle en programmant en langage python.

Il existe d'autres commandes turtle.

Programmation de jeux vidéos

Dès la 3ème secondaire, le parascolaire de programmation de jeux vidéos vous apprendra à faire de petits jeux 2D !

Pour en savoir plus

Voici un aperçu d'autres fonctionnalités turtle/python.

On peut créer plusieurs tortues (objets python) :


            bob = Turtle() # ou Pen()
            bob.shape("turtle")
            bob.color("blue")
            bob.forward(50)
            alice = Turtle()
            alice.shape("turtle")
            alice.color("green")
            alice.fd(100)
            

Et créer des variables en fonction de la tortue.


            bob.deplacement = 5
            alice.deplacement = 10

            def avancer_en_traits(tortue):
              for i in range(3):
                tortue.penup()
                tortue.fd(tortue.deplacement)
                tortue.pendown()
                tortue.fd(tortue.deplacement)

            bob.lt(90)
            alice.lt(90)
                    
            avancer_en_traits(bob)
            avancer_en_traits(alice)
            

Ou créer des listes de tortues :


            liste = [bob, alice]
            charles = Turtle()
            charles.shape("turtle")
            charles.deplacement = 7
            liste.append(charles) # ajouter à la fin

            for tortue in liste: #  pour chaque tortue dans la liste  
              ancienne_couleur = tortue.color() # on sauve la couleur 
              tortue.color("blue")
              avancer_en_traits(tortue)
              tortue.color(ancienne_couleur) # on réapplique l'ancienne couleur 
            

Ou encore créer des conditions pour changer de logique :


            penup()
            fd(-100)
            n = 0
            for i in range(45):
              penup()
              fd(20)
              pendown()
              fd(20)
              n = n + 1
              if n == 4:
                right(90)
                color("red")
              else:
                if n == 7:
                  right(90)
                  color("blue")
                else:
                  if n == 9:
                    right(90)
                    n = 0
            

Exercice 13 : Le village variable

Essaie de faire des tailles variables :

Un village avec des maisons de toutes les tailles

Au revoir et pour toute question, je suis disponible par mail via robertvandeneynde[at]hotmail.com