TP 5 - turtle : introduction aux fonctions
¶

A. Ridard

Activité¶

Commençons par importer les fonctions de la bibliothèque turtle.

In [ ]:
from turtle import *

Dans l'exercice 2 du TP4, nous avons dessiné une fleur à partir de 6 losanges avec deux boucles for imbriquées !

Si l'on disposait d'une fonction losange(), l'écriture de ce programme serait plus simple, tout comme sa lecture.

In [ ]:
for i in range(6):
    losange()
    left(60)

exitonclick()
TurtleScreen._RUNNING = True

Mais la fonction losange() n'existe pas, c'est à nous de la définir.

In [ ]:
def losange():
    for i in range(2):
        forward(100)
        left(60)
        forward(100)
        left(120) 

On peut maintenant l'utiliser comme n'importe quelle autre fonction.

In [ ]:
for i in range(6):
    losange()
    left(60)

exitonclick()
TurtleScreen._RUNNING = True

Exercices¶

Exercice 1 (cube)¶

Compléter le programme suivant pour dessiner un cube à l'aide d'un carré et de deux parallélogrammes.

No description has been provided for this image
In [ ]:
# cube

# on dessine le carré
for i in range(4):
        forward(50)
        left(90)

# on se positionne pour la suite
left(90)
forward() ###
right(90)

# on dessine le premier parallélogramme
for i in range(2):
        forward(50)
        left(50)
        forward(40)
        left(130)

# on se positionne pour la suite
forward() ###
right() ###

# on dessine le deuxième parallélogramme
for i in range(2):
        forward(50)
        left(140)
        forward(40)
        left(40)

exitonclick()
TurtleScreen._RUNNING = True

Définir une fonction carre() et deux fonctions parallelog1() et parallelog2() permettant de simplifier l'écriture du programme.

In [ ]:
# réponse

Définir une fonction à un paramètre parallelog(premier_angle) permettant de remplacer les deux fonctions parallelog1() et parallelog2().

In [ ]:
# réponse

Les fonctions simplifient l'écriture et la lecture d'un programme.
Elles nous invitent aussi à découper un problème en plusieurs sous-problèmes, chacun étant résolu par une fonction.

Exercice 2 (Rubik's cube)¶

L'objectif est de représenter le cube de Rubik.

No description has been provided for this image
Pour cela, nous allons d'abord résoudre plusieurs sous-problèmes.

Définir les fonctions suivantes qui permettront, au final, de représenter le cube de Rubik :

  • carre_rubik(c) qui dessine un carre de côté c, rempli avec une couleur choisie en dehors de la fonction
  • parallelog_rubik(a,c1,c2) qui dessine un parallélogramme de premier angle a et de côtés c1 et c2, rempli avec une couleur choisie en dehors de la fonction
  • ligne_carre(c,color) qui revient au point de départ après avoir dessiné une ligne de trois carrés de côtés c, colorée en color
  • ligne_parallelog(a,c1,c2,color) qui revient au point de départ après avoir dessiné une ligne de trois parallélogrammes de premier angle a et ...

Chacune de ces fonctions sera testée à l'aide de l'appel fourni.

Remarque : les paramètres utilisés dans un appel de fonction sont dits effectifs alors que dans une définition de fonction, ils sont qualifiés de formels .

In [ ]:
# définition de la fonction carre_rubik(c)
In [ ]:
# test de la fonction carre_rubik(c)

fillcolor("red") # la fonction prédéfinie fillcolor(), provenant de la bibliothèque turtle, est appelée avec le paramètre (effectif) "red"
carre_rubik(50) # quant à notre propre fonction carre_rubik(), elle est appelée avec le paramètre (effectif) 50

exitonclick()
TurtleScreen._RUNNING = True
In [ ]:
# définition de la fonction parallelog_rubik(a,c1,c2)
In [ ]:
# test de la fonction parallelog_rubik(a,c1,c2)

fillcolor("blue")
parallelog_rubik(40,50,40)

exitonclick()
TurtleScreen._RUNNING = True
In [ ]:
# définition de la fonction ligne_carre(c,color)
In [ ]:
# test de la fonction ligne_carre(c,color)

ligne_carre(50,"red")

exitonclick()
TurtleScreen._RUNNING = True
In [ ]:
# définition de la fonction ligne_parallelog(a,c1,c2,color)
In [ ]:
# test de la fonction ligne_parallelog(a,c1,c2,color)

ligne_parallelog(40,50,40,"blue")

exitonclick()
TurtleScreen._RUNNING = True

Compléter le programme suivant pour dessiner le cube de Rubik.

In [ ]:
# cube de Rubik

speed(9)

for i in range(): ###
    ligne_carre(50,'red')
    left(90)
    forward(50)
    right(90)

for i in range(3):
    ligne_parallelog(40,50,40,'blue')
    left() ###
    forward() ###
    right() ###

forward(3*50)
right(180-40)

for i in range(3):
    ligne_parallelog(,,,'green') ###
    left(50)
    forward(50)
    right(50)

exitonclick()
TurtleScreen._RUNNING = True

Mettre en place un ensemble de variables permettant de modifier facilement les éléments suivants :

  • la vitesse du tracé
  • les dimensions du cube
  • la perspective du dessin
  • les couleurs des faces
In [ ]:
# variables



# cube de Rubik



exitonclick()
TurtleScreen._RUNNING = True