Aller au contenu

Tracer des mots⚓︎

Des mots pour tracer

Nous allons construire de nouvelles fonctions permettant de tracer des figures à partir de commandes données à l'aide de textes. Dans la suite de ce projet, on appellera instructions un texte indiquant les actions à effectuer, comme 'hgbdh'.

La fonction interactif de donner les instructions les unes après les autres pour tracer une figure.

# Exercices 1, 2 et 4
def interactif():
    rep = ""
    while rep != ".":
        rep = input("Nouvelle direction h/b/g/d ? ")
        if rep == "h":
            setheading(90)
            forward(LONGUEUR)
        elif rep == "b":
            setheading(-90)
            forward(LONGUEUR)
        elif rep == "g":
            setheading(180)
            forward(LONGUEUR)
        elif rep == "d":
            setheading(0)
            forward(LONGUEUR)

La variable LONGUEUR sera utilisée tout au long du fichier pour indiquer la longueur des déplacements. Elle ne sera jamais changée pendant l'exécution des fonctions. On appelle cela une constante. La valeur peut être changée dans le fichier, mais cela nécessite de recharger le script.

Exercice 1

Copier la fonction interactif et déterminer ce qu'il faut entrer pour arrêter son exécution. Indiquer votre réponse sur la feuille.

Pour copier le code, il faut cliquer sur le bouton en haut Ă  droite du bloc de code

Exercice 2

Modifier la fonction interactif pour qu'elle renvoie à la fin de l'exécution un texte composé des commandes tapées. Il faut rajouter une nouvelle variable instructions qui sera mise à jour à chaque tour de boucle et la renvoyer à la fin de l'exécution de la fonction.

Il faut compléter et placer au bon endroit chacune des lignes suivantes.

instructions = ...  # valeur initiale
instructions = ...  # mise Ă  jour de la variable
return ...          # la valeur est renvoyée 

Les trois lignes vont à trois endroits différents. Le texte renvoyé peut contenir, ou pas, le symbole permettant d'arrêter l'exécution.

>>> interactif()
Nouvelle direction h/b/g/d ? h
Nouvelle direction h/b/g/d ? h
Nouvelle direction h/b/g/d ? g
Nouvelle direction h/b/g/d ? b
Nouvelle direction h/b/g/d ? g
Nouvelle direction h/b/g/d ? SECRET  # Je ne vais pas vous donner la réponse de l'exercice 1
'hhgbg'

Vous pouvez utiliser cette fonction pour faire l'exercice de la feuille.

Exercice 3

Compléter le code de la fonction executer pour que executer(instructions) fasse le dessin indiqué par instructions. Il faut rajouter plusieurs lignes et il n'y a pas de return à mettre à la fin.

# Exercices 3 et 4
def executer(instructions):
    for instr in instructions:
        if instr == "h":
            ...
        elif ...:
            ...
        ...

Vous pouvez vous inspirer de interactif.

Pour cette fonction, vous pouvez utiliser setheading.

Le code ci-dessous permet d’obtenir la figure ci-contre.

>>> executer("hhdbgdb")

La position initiale est en rouge et la position finale en bleu.

Exercice 4

Rajouter dans les fonctions interactif et executer la possibilité de lever le stylo avec 'l' et de le remettre un position d'écriture avec 'e'.

Une fois le stylo levé, si la tortue se déplace, elle ne doit rien tracer tant qu'il n'a pa été remis en position d'écriture.

Les commandes Python sont up() et down(). La tortue ne doit pas se déplacer avec ces intructions.

Le code ci-dessous permet d’obtenir la figure ci-contre. La partie correspondant au déplacement avec le stylo levé est en pointillés.

>>> executer("dlbeg")