Dessiner avec des variables — le motif du cœur

Denis Dréano
PROG2-14

Dessiner avec des variables — le motif du cœur

Objectifs cantonaux : O1.6.

Cours complet sur la plateforme Runestone de Cédric Donner : Dessiner avec des variables.

Suite de la séance précédente : un exemple plus complet qui combine variables, boucle, fonction à paramètres et remplissage de forme.

→ Exemple — dessiner un cœur
from gturtle import *

def demi_coeur(taille, sens):
    angle = 30
    startPath()
    for _ in range(16):
        forward(taille)
        left(angle * sens)
        angle -= 2
    fillPath()

def coeur(taille, couleur):
    setFillColor(couleur)
    setPenColor(couleur)
    demi_coeur(taille, 1)
    setPos(0, 0)
    setHeading(0)
    demi_coeur(taille, -1)
    setPos(0, 0)

hideTurtle()
coeur(10, "pink")
  • angle est une variable locale à demi_coeur, qui diminue de 2° à chaque tour de boucle (angle -= 2) — c’est ce qui donne sa courbe au cœur, exactement comme cote += 10 faisait grandir la spirale.
  • Le paramètre sens (1 ou -1) permet de réutiliser la même fonction demi_coeur pour dessiner les deux moitiés du cœur, symétriques l’une de l’autre.
  • coeur(taille, couleur) orchestre les deux appels à demi_coeur : encore un exemple de conception modulaire (S12) appliqué avec des variables.

▷ Créer ses propres couleurs

La commande makeColor(rouge, vert, bleu) fabrique une couleur personnalisée à partir de trois valeurs comprises entre 0 et 255 (voir le chapitre sur la représentation de l’information pour le détail de ce codage) :

couleur = makeColor(122, 10, 50)
setPenColor(couleur)

Bilan rapide du projet carte de vœux

Le TP « carte de vœux » (S12-S13) est maintenant terminé. Les notions vues depuis (variables, incrémentation) montrent qu’il existe encore d’autres manières d’enrichir ce type de projet — dégradés de couleur, tailles progressives, etc. — pour celles et ceux qui souhaitent continuer à l’améliorer à titre personnel.