Turtle

Avancer et tourner

English here!

Exercice 1 : Avancer, tourner

Dans une nouvelle fenêtre, va 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), puis écris le code suivant 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.

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.

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

Exercice 2 : Raccourcis

É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(100)
                lt(90 + 90)
                fd(100 * 2)
            

Formes complexes

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

Sauve ce code dans un nouveau fichier pour pouvoir le réutiliser plus tard !

Plusieurs fichiers

Raccourcis claviers

Quelques raccourcis clavier très utiles pour éditer du texte :

Ç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:

Ça marche aussi quand vous avez plusieurs lignes sélectionnées.

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

Crayon et couleurs

penup/pendown

Un stylo dessinant une ligne

La nouvelle commande penup(), raccourci pu(), permet de lever le crayon, ainsi la tortue peut bouger sans dessiner. Ensuite, pendown(), raccourci pd(), 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("#ff9900").


                fd(30)
                color("yellow")
                fd(30)
                color("red")
                fd(30)
                color(253, 126, 0)
                fd(30)
                color("#ff0060")
                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

Fonctions

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(taille):
              fd(taille)
              lt(90)
              fd(taille)
              lt(90)
              fd(taille)
              lt(90)
              fd(taille)
              lt(90)
            

Que l'on utilisera comme ceci :


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

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

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

Oeuvre d'art

Exercice 12 : Votre oeuvre 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, 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