Aller au contenu

TD Turtle⚓︎

Consigne Générale

Chaque question de ce TD :

  • doit utiliser au moins une fois la boucle for (sauf si la question est trop simple..)
  • peut utiliser des fonctions (informatiques) dès que possible/souhaitable

Le site en ligne suivant peut être utilisé comme solution alternative (en cas de problème d'utilisation du module Turtle en local) : https://trinket.io/turtle

Traits & Figures⚓︎

Traits Simples⚓︎

  1. 🚀 Dessiner un Trait de Longueur 200px :

    • en allant vers l'Est/la Droite
    • en allant vers l'Ouest/la Gauche
    • en allant vers le Nord/le Haut
    • en allant vers le Sud/le Bas

    Col


    Col


  2. 🚀 Dessiner un trait horizontal, allant vers l'Est, de longueur totale 200px, en pointillés, chacun de longueur 5px (aussi bien le trait, ainsi que les espaces entre les traits)

  3. 🚀 Dessiner un Trait de 200px avec un angle de 30° par rapport à l'axe des x :

Escalier de 7 marches⚓︎

🚀 Dessiner un escalier avec 7 marches, dont chaque marche admet :

  • une hauteur de 18px
  • une longeur horizontale de 27px

Fleur⚓︎

🚀🚀 Dessiner une Fleur dont les pétales sont des Losanges

Utiliser le modèle de base suivant pour construire Une Fleur comme ci-contre, de sorte que :

Col

  • Chaque ligne admet une longueur de 60px
  • les angles sont soit de 30° (angle1), soit de 150° (angle2)

Col

Losange/Pétale

Col

Col

Aller Plus loin 🚀🚀 Ajouter une tige, et des feuilles sur la tige..

Spirales de Traits⚓︎

🚀🚀🚀 Dessiner des Spirales de Traits :

Aide

On peut commencer par se demander :

  • Si un trait est de longueur x à un instant donné, quelle longueur minimale (au jugé) doit faire le trait suivant (en fonction de x)?
  • Que peut-on dire du nombre de degrés à tourner vers la gauche (à chaque 'coin' de la spirale) ? (même une valeur très approchée, selon vous)

Descente de Ski⚓︎

Commencer par définir 200x200 comme taille de fenêtre graphique, avec la commande Screen().setup(200,200). Ensuite :

🚀🚀 Construire une Piste de Ski comme sur la figure suivante :

Aide

  • Répéter plusieurs fois la contruction d'un trait
  • les deux extrémités du trait appartiennent aux côtés horizontal (bas) et vertical (droit)
  • Etat initial : relier par un trait le point en haut à droite, au point en bas à droite
  • le point vertical descend de la même quantité que le point horizontal se déplace à gauche

Aller Plus loin Répéter 4 fois cette opération, de sorte à recouvrir chaque coin de la fenêtre graphique

Marche Aléatoire⚓︎

  1. 🚀🚀 La Marche Aléatoire de la Tortue. Dessiner :

    • une succession de 100 Pas/Traits
    • chaque pas est de longueur fixe 10px
    • chaque futur trait prend une nouvelle direction alatoire : EST, OUEST, NORD ou SUD
    • Facultatif : On pourra également, si vous y arrivez :
      • calculer et afficher la distance (en nombre de pas) entre le point de départ et le tout dernier point d'arrivée
      • calculer et afficher la durée totale de parcours, grâce au module time, inclus dans la bibliothèque standard :

        from time import time
        start = time()      # Top départ du chronomètre
        # ...
        # Algorithme à chronométrer
        # ...
        end = time()        # Top arrêt du chronomètre
        print("durée=", end - start)
        

    Astuce

    • Vous pouvez vous amuser à afficher un logo de Tortue, au lieu d'une icone triangle, avec la commande shape("turtle"). Tous les logos disponibles (cf. ici) sont : “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”.
    • Pensez à accélérer le tracé avec la commande speed(0) ou speed("fastest")

Polygones⚓︎

Triangles⚓︎

  1. 🚀 Dessiner un triangle dont les 3 sommets ont pour coordonnées (0,0), (300,100) et (200,50)

  2. Dessiner un triangle équilatéral dont chaque côté vaut 100px

    Aide

    Tourner à gauche de \(\dfrac{360°}{3} = 120°\)

    Par exemple avec un Bord et un Fond de couleur rouge

    Astuce

    On pourra par exemple :

    • choisir entre deux méthodes pour changer de couleur entre deux formes :
      • Méthode 1
        • définir une variable couleur pour l'indice des couleurs
        • initialiser le compteur à 0 : couleur=0
        • puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
      • Méthode 2
        • Stocker les couleurs dans une liste couleurs = ["red", "orange", "yellow", "green", "blue", "purple"], puis parcourir la liste des couleurs avec une boucle for, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
    • accélérer le tracé avec speed(0)
  3. 🚀🚀 Kaleidoscope de Triangles

Astuce

Pensez à accélérer le tracé avec la commande speed(0) ou speed("fastest")

Vortex de Triangles⚓︎

🚀🚀 Dessiner un Vortex de Triangles Équilatéraux, tel que :

  • Le triangle équilatéral initial a un côté de 50px
  • A chaque nouvelle itération de triangles équilatéraux :
    • le côté de chaque nouveau triangle équilatéral augmente légèrement
    • chaque triangle équilatéral subit une légère rotation (à droite/gauche choisissez votre camp... )

Aide

  • En fait ce sont presque des triangles équilatéraux, mais pas exactement : il s'agit en fait d'une illusion optique, qui donne l'illusion que ce sont des triangles équilatéraux.
  • Inspirez-vous plutôt de votre travail sur les Spirales de Traits, mais en modifiant légèrement le code qui calculait l'augmentation du côté x entre chaque nouvelle itération de triangle équilatéral.

Carrés⚓︎

  1. Un Carré de côté 100px

    Aide

    Tourner à gauche de \(\dfrac{360°}{4} = 90°\)

    Par exemple avec des Bords et un Fond de couleur rouge.

    Astuce

    On pourra par exemple :

    • choisir entre deux méthodes pour changer de couleur entre deux formes :
      • Méthode 1
        • définir une variable couleur pour l'indice des couleurs
        • initialiser le compteur à 0 : couleur=0
        • puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
      • Méthode 2
        • Stocker les couleurs dans une liste couleurs = ["red", "orange", "yellow", "green", "blue", "purple"], puis parcourir la liste des couleurs avec une boucle for, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
    • accélérer le tracé avec speed(0)
  2. Ampliation de Carrés

🚀🚀 Dessiner une ampliation de carrés telle que:

  • Le plus petit des carrés a un côté de 10px
  • la taille (du côté) des carrés augmente de 10px, entre deux carrés

  1. Ligne de Carrés

🚀 Dessiner une ligne de 10 carrés contigüs, telle que chaque carré (élémentaire) a un côté de 20px

  1. Grille de Carrés

🚀🚀🚀 Dessiner une grille de 10x10 carrés, telle que :

  • Chaque carré (élémentaire) a un côté de 20px

  1. 🚀🚀 Kaleidoscope de Carrés

Astuce

Pensez à accélérer le tracé avec la commande speed(0) ou speed("fastest")

  1. Spirale de Carrés

🚀🚀🚀 Dessiner une Spirale de Carrés telle que:

  • Le côté du carré initial vaut 200px
  • La spirale contient environ une trentaine de carrés
  • La taille des carrés diminue à chaque étape (par exemple, la taille diminue de \(\dfrac 19\) entre chaque itération)
  • chaque carré subit une légère rotation comme sur la figure Trinket ci-contre

Vortex de Carrés⚓︎

🚀🚀 Dessiner un Vortex de Carrés, tel que :

  • Le carré initial a un côté de 50px
  • A chaque nouvelle itération de carrés :
    • le côté de chaque nouveau carré augmente légèrement
    • chaque carré subit une légère rotation (à droite/gauche choisissez votre camp... )

Aide

  • En fait ce sont presque des carrés, mais pas exactement : il s'agit en fait d'une illusion optique, qui donne l'illusion que ce sont des carrés.
  • Inspirez-vous plutôt de votre travail sur les Spirales de Traits, mais en modifiant légèrement le code qui calculait l'augmentation du côté x entre chaque nouvelle itération de carrés

Rectangles⚓︎

  1. Un Rectangle dont les côtés sont Largeur=50px, et Hauteur=100px

    Par exemple avec un Bord et un Fond de couleur rouge

  2. 🚀 🐓 Dessiner le Drapeau Français ! et/ou tout autre drapeau (conseil: avec des formes simples) !

Pentagone⚓︎

  1. Un Pentagone Régulier

    Aide

    Tourner à gauche de \(\dfrac{360°}{5} = 72°\)

  2. Vortex de Pentagones

🚀🚀 Dessiner un Vortex de Pentagones, tel que :

  • Le pentagone initial a un côté de 50px
  • A chaque nouvelle itération de pentagones :
    • le côté de chaque nouveau pentagone augmente légèrement
    • chaque pentagones subit une légère rotation (à droite/gauche choisissez votre camp... )

Aide

  • En fait ce sont presque des pentagones, mais pas exactement : il s'agit en fait d'une illusion optique, qui donne l'illusion que ce sont des pentagones.
  • Inspirez-vous plutôt de votre travail sur les Spirales de Traits, mais en modifiant légèrement le code qui calculait l'augmentation du côté x entre chaque nouvelle itération de pentagones.

Etoile à 5 branches⚓︎

  1. 🚀 Dessiner une étoile à \(5\) branches dont la longueur d'une branche vaut 200px

    Aide

    Tourner à gauche de \(144°\)

  2. 🚀🚀 Drapeau Européen

Utiliser la question précédente pour dessiner un Drapeau Européen 🇪🇺

Hexagone⚓︎

  1. 🚀 Un Hexagone Régulier

    Aide

    Tourner à gauche de \(\dfrac{360°}{6} = 60°\)

Polygones Réguliers à n côtés⚓︎

  1. 🚀 Implémentez en Python, grâce au module Turtle, l'algorithme suivant qui est donné en Pseudo-code.
    Que fait-il ?

    n prend la valeur 5
    coté prend la valeur 50
    Répéter n fois:
        tournerGauche(360/n)
        avancer(coté)
        tournerDroite(2*360/n)
        avancer(coté)
    

Cercles & Arcs de Cercles⚓︎

Cercles et Disques de Couleur⚓︎

Dessiner :

  • Un cercle de rayon 50px qui tourne dans le sens Anti-Horaire (sens contraire des aiguilles d'une montre)

suivi de :

  • Un cercle de rayon 50px qui tourne dans le sens Horaire (sens des aiguilles d'une montre)

Dessiner un disque de rayon 50px, dont les bords ET le fond est bleu.

Lignes de Disques⚓︎

🚀🚀 Dessiner une Ligne de 6 Disques AVEC Couleur de Fond.

Astuce

On pourra par exemple :

  • choisir entre deux méthodes pour changer de couleur entre deux formes :
    • Méthode 1
      • définir une variable couleur pour l'indice des couleurs
      • initialiser le compteur à 0 : couleur=0
      • puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
    • Méthode 2
      • Stocker les couleurs dans une liste couleurs = ["red", "orange", "yellow", "green", "blue", "purple"], puis parcourir la liste des couleurs avec une boucle for, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
    • accélérer le tracé avec speed(0)

Kaleidoscope de Cercles⚓︎

🚀🚀 Dessiner un Kaléidoscope de Cercles :

Astuce

Pensez à accélérer le tracé avec la commande speed(0) ou speed("fastest")

Disques en Arc de Cercle⚓︎

🚀🚀🚀 Dessiner des Disques de Couleur disposés en Arc de Cercle :

Astuce

On pourra par exemple :

  • choisir entre deux méthodes pour changer de couleur entre deux formes :
    • Méthode 1
      • définir une variable couleur pour l'indice des couleurs
      • initialiser le compteur à 0 : couleur=0
      • puis, incrémenter de 1 à chaque nouvelle itération de la forme, pour changer de couleur à chaque fois. Ou bien :
    • Méthode 2
      • Stocker les couleurs dans une liste couleurs = ["red", "orange", "yellow", "green", "blue", "purple"], puis parcourir la liste des couleurs avec une boucle for, et dans chaque cas, tracer les formes de couleur, puis se déplacer légèrement vers l'Est de quelques pixels.
  • accélérer le tracé avec speed(0)

Aller Plus Loin 🚀🚀🚀 Et si on souhaitait dessiner plus de 6 Disques, toujours en arc de cercle :

  • Comment faire pour que les couleurs soient alternées, mais se répètent en boucle tous les 6 disques ?
  • Quelle méthode (la 1 ou la 2) vous semble préférable ? et pourquoi ?

Spirale Circulaire⚓︎

🚀🚀 Dessiner une Spirale circulaire.

Aide

On pourra répéter une vingtaine de fois (avec boucle for) les commandes suivantes :

  • tracer un arc de cercle avec circle(r,a)r est le rayon et a l'angle de l'arc
  • augmenter le rayon r proportionnellement à chaque itération
  • choisir un angle de a=90°

Yin & Yang⚓︎

Soleil⚓︎

🚀🚀🚀 Dessiner un Soleil, avec les caractéristiques suivantes :

  • Un Cercle central de rayon 50px
  • \(120\) rayons de soleil autour du cercle
  • un angle de sépare chaque rayon de soleil

Dessin Algorithmique⚓︎

  1. 🚀🚀 Le site Wellesley Edu répertorie quelques exemples d'images artistiques à créer avec Turtle. Tentez de les reproduire et de les modifier.

    Abeille Bonhomme Coucher de Soleil Plante Panda Montagnes Elephant Poisson Pont

  2. 🚀(🚀(🚀)) Créez vos propres oeuvres artistiques ! Seule votre imagination est la Limite. Soyez créatives et créatifs !

Art Aléatoire⚓︎

  1. 🚀🚀🚀 Génération de Polygones Aléatoires

  2. 🚀🚀🚀🚀 Génération d'un Vortex de Rectangles aux Couleurs Aléatoires (l'Animation est longue - 10 min, prévoir de la lancer longtemps en avance - et finit par créer des rectangles de couleur)

Résultat Attendu :

Vortex de Rectangles de Couleur

  1. Créer votre Oeuvre d'Art Aléatoire personnelle ! Soyez Créatives et Créatifs !

Références⚓︎