Page10

Demarrer avec le module turtle

Ce module permet de réaliser facilement des dessins de figures géometriques animées.

Editeur en ligne

Ouvrir une page de votre navigateur avec Trinket + Python : https://trinket.io/python

Commencer avec le programme minimal suivant :

import turtle
tt = turtle.Turtle()
print(tt.window_width())
print(tt.window_height())
tt.up()
tt.goto(-100,100)
tt.down()

Maintenant que vous connaissez ses dimensions (width et height sont affichés dans la console), écrire une fonction qui dessine une bordure autour de l’écran graphique. Dessiner ce contour.

On pourra utiliser les coordonnées absolues, à l’aide de l’instruction goto.

Puis positionnez la tortue à une position aleatoire, à l’interieur de ce cadre.

Utiliser from random import randint

Lorsque la fonction randint prend 2 arguments : il s’agit de la borne inferieure et de la borne superieur du tirage aleatoire : randint(inferieur,superieur).

Exemple: randint(-100,100) retourne un entier entre -100 et 100.

Explorer les fonctions

On pourra parcourir les documents suivants:

Etoiles à 5 branches

def etoile(longueur):
    """Fonction pour dessiner une étoile
    Params:
    ---------
    tt : object, le sprite turtle
    longueur : int, longueur de chacune des branches"""
    
    tt.setheading(180-2*72)
    for i in range(5):
        tt.forward(longueur)
        tt.left(180-180/5)

Executer la fonction avec une valeur aleatoire pour le paramètre longueur.

Sur votre cahier de labo: représenter la fenêtre de dessin, son contour, la position (0, 0) de turtle, ainsi que les dimensions width et hight de cette fenêtre.

Dans l'editeur Trinket: Ecrire une fonction qui représente un ciel étoilé, contenant N étoiles mises dans une position aléatoire, et de longueurs aleatoires.

Sur votre cahier de labo: Calculer le nombre d’opérations réalisées par la fonction, puis estimez la complexité de cette fonction, en considérant comme instructions significatives :

 * chaque appel de la fonction `randint`
 * chaque opération arithmetique
 * chaque deplacement ou rotation réalisé par la tortue

Créer un module

Sur le bandeau de l’editeur, à droite, appuyer sur (+). Cela fait apparaitre un nouvel onglet. C’est un nouveau fichier qui s’ajoute à votre projet.

Dans l'editeur Trinket: Renommer ce fichier. Par exemple, avec figures.py. Vous deplacerez les fonctions crées precedemment dans ce fichier, ainsi que les premières lignes:

import turtle
from random import *
tt = turtle.Turtle()

Dans le fichier principal, vous devrez maintenant importer ce module. Partagez ainsi votre code entre ces 2 fichiers, afin de rendre celui-ci plus lisible. Les appels de fonctions se feront dans le fichier principal, main.py.

Les dessins récursifs

Créer un nouveau fichier dans le même projet, que vous appelerez recursif.py

Des carrés

On veut réaliser le dessin récursif dont on a mis ci-dessous les premières étapes (profondeur 0,1 et 2):

Sur votre cahier de labo:

  • Compléter l’arbre des appels de la fonction recursive avec les traits du dessin de la figure.
    * Représenter la figure dessinée avec une profondeur de 2. Numéroter les 3 premiers segments dessinés par le programme.

Dans l'editeur Trinket: Completer la partie heredite du script suivant pour la fonction recur_carre.

def recur_carre(divis):
  # Base de la fonction recursive
  if divis >= 4:
    return
  # l'instruction return ne retourne rien 
  # mais termine la fonction
  # 
  # --- partie heredite ---
  # 

Dans la partie heredité: la fonction s’appelle elle-même avec un paramètre PLUS GRAND pour divis. Ce paramètre représente le diviseur de la longueur du côté du carré dessiné

Appeler la fonction avec l’instruction: recur_carre(1)

Sur votre cahier de labo: Calculer le nombre d’opérations réalisées par la fonction, puis estimez la complexité de cette fonction, en considérant comme instructions significatives :

 * chaque deplacement ou rotation réalisé par la tortue

Des triangles

Adapter ensuite cette fonction pour dessiner la figure:

Chalenge avec d’autres triangles

Liens