Activité#

Les drapeaux suivants sont constitués de trois rectangles de couleurs différentes. Le drapeau français est constitué de 3 rectangles bleu, blanc et rouge et le drapeau de l’Allemagne est constitué de trois rectangles jaune, rouge et noir.

../_images/drapeau_fr_pb.svg

L’objectif est de dessiné ces drapeaux avec le module turtle en respectant l’ordre des couleurs et la disposition verticale ou horizontale des rectangles.

La figure ci-dessous donne les dimensions et les coordonnées à respecter pour représenter ces 2 drapeaux.

../_images/drapeaux.svg

Le script Python est enregistré dans un fichier drapeau.py et contient les instructions suivantes:

from turtle import *

# --------------------------------
# préparation environnement Turtle
# --------------------------------

# fond gris
bgcolor('lightgray')

# initialisation des dimensions de la fenêtre
setworldcoordinates(-20,-20,400,200)

# -------------------------
# Les fonctions à écrire ici
# --------------------------

# fonction deplacer
#-------------------



# fonction rectangle
#-------------------



# ----------------------------------
# Le programme principal à compléter
# -----------------------------------

# Variables H et L pour la hauteur et Largeur des drapeaux

L = 180
H = 120

# ---------------------------
# Drapeau de la France:
# ---------------------------

# dessiner le rectangle bleu

# dessiner le rectangle blanc

# dessiner le rectangle rouge


# ---------------------------
# Drapeau de l'Allemagne:
# ---------------------------

# dessiner le rectangle jaune

# dessiner le rectangle rouge

# dessiner le rectangle noir


# A la fin, on cache la tortue!
#hideturtle()
# on arrête la boucle du module turtle
mainloop()

Fonction déplacer#

Pour tracer les rectangles de couleur différente, il va falloir déplacer la tortue au bon endroit. Le déplacement de la tortue se fait avec les 3 fonctions up, goto et down du module turtle. L’objectif est donc de créer une fonction deplacer qui appelle ces 3 fonctions.

On donne le code de la fonction deplacer:

def deplacer():
    # on lève le crayon
    up()
    # on déplace la tortue
    goto(x,y)
    # on baisse le crayon
    down()
  1. Recopier cette fonction dans la partie de code du fichier drapeau.py réservée aux fonctions.

  2. En l’état, la fonction goto(x,y) ne sait pas à quelles coordonnées elle doit déplacer la tortue. Donc on ajoute les paramètres x,y qui désignent les coordonnées entre les parenthèses palcées après le nom de la fonction : deplacer(x,y).

  3. On va appeler cette fonction et vérifier qu’elle déplace bien la tortue.

    1. Exécuter le code drapeau.py et vérifier que la fenêtre graphique s’affiche avec la tortue.

    2. Dans l’interpréteur (console), saisir l’instruction deplacer(100,100) puis sur la touche “entrée”.

    3. Vérifier que la tortue se déplace. Faire d’autres tests ou corriger votre fonction en cas d’erreur.

La fonction rectangle#

Pour créer un drapeau de trois couleurs, il faut tracer 3 rectangles de couleur différente qui s’alignent correctement et dans le bons sens. Cela suppose de connaître la largeur, la hauteur et la couleur de chaque rectangle qui compose le drapeau.

On va écrire la fonction rectangle qui construit un rectangle de couleur. La fonction a 3 paramètres qui sont:

  • largeur pour la largeur du rectangle;

  • hauteur pour la hauteur du rectangle;

  • couleur pour la couleur de remplissage et le tracé du rectangle.

  1. Ajouter la fonction rectangle avec ses 3 paramètres dans le fichier drapeau.py

    def rectangle(largeur, hauteur, couleur):
        begin_fill()
        color(couleur)
        for i in range(2):
           forward(largeur)
           left(90)
           forward(hauteur)
           left(90)
        end_fill()
    
  2. Exécuter le fichier drapeau.py puis saisir dans l’interpréteur l’instruction rectangle(100,150,"blue") et vérifier que le rectangle bleu se dessine bien dans la fenêtre graphique.

Le programme principal#

Nous allons écrire le code pour tracer les drapeaux de la France et de l’Allemagne en utilisant nos fonctions deplacer et rectangle.

../_images/drapeau_fr_pb.svg
  1. Repérez les coordonnées du coin bas et gauche de chaque rectangle qui compose le drapeau français.

  2. Dans la console, saisir les fonctions deplacer et rectangle pour dessiner le drapeau français.

  3. Lorsque vous avez réussi, ajoutez les instructions dans le code du fichier drapeau.py, dans la partie programme principal, pour dessiner le drapeau de la France.

  4. Faire de même avec le drapeau de l’Allemagne. Attention, il doit être positionné à côté du drapeau français et avoir les mêmes dimensions.

Aller plus loin#

On peut optimiser le code qui dessine les drapeaux.

  • En utilisant un tableau avec les couleurs du drapeau à dessiner;

  • En utilisant une boucle for qui contient les instructions deplacer et rectangle;

  • En créant une fonction dessine_drapeau qui dessine le drapeau demandé.

  1. Créer la variable fr contenant un tableau avec les 3 couleurs du drapeau français.

  2. Remplacer votre code dessinant le drapeau français par la boucle for suivante à compléter:

    x,y = 0,0
    for couleur in fr:
        deplacer(x,y)
        rectangle(...,...,couleur)
        x = ...
    
  3. Créer la fonction dessine_drapeau qui a pour paramètres :

    • x et y qui sont les coordonnées du coin bas et gauche du drapeau,

    • largeur et hauteur qui sont les dimensions du drapeau à dessiner,

    • pays qui est un tableau avec les couleurs du drapeau à dessiner.

  4. Ajouter un paramètre position qui adapte le dessin du drapeau selon que les rectangles sont verticaux ou horizontaux.