Exécution conditionnelle et tortue

Sur le principe d'un bitmap.

Le programme suivant utilise le module turtle.


from turtle import * # on importe le module turtle

setworldcoordinates(-32,-32, 12,12)# ouverture de la fenêtre graphique

mot = "0101100111" # une chaîne de caractères

 
penup() # on lève le crayon pour ne pas laisser de trace des déplacements
speed(0) # accélération de la tortue
setposition(-20,0) # position initiale de la tortue
shape('turtle') # forme de la tortue


for c in mot : 
    rayon = 3 * ( c == '0')  + 15 * ( c == '1') # rayon du point
    dot(rayon,'black') # tracé du point
    forward(1) # on avance de 1
    
      

hideturtle() # on cache la tortue
exitonclick() # on fermera la fenêtre par un clic sur cette fenêtre

Le résultat de ce code est le suivant :
exemple

Votre tâche est maintenant de compléter le code suivant :


from turtle import *

setworldcoordinates(-32,-32, 12,12)

mot = "0000000111111000000000000111101111100000000011000000001110000011100000\
0000001100001100000000000001000110000100000100011001000111100011100011\
1100011100011110001111000001000001000001100000000000000000111100000000\
0000000001110010000000000100111100010000000010001101000110000001100011\
0110001110011100001000110001111110001100000110000000000011000000110000\
00001110000000011110101110000000000001111111000000"


 
penup()
speed(0)
setposition(-20,0)
shape('turtle')


#### compléter ici ###

hideturtle()

exitonclick()

Le code à compléter doit :

  • parcourir les lettres du mot,
  • dessiner un petit point blanc (rayon 3) pour chaque caractère 0,
  • dessiner un gros point noir (rayon 20) pour chaque caractère 1,
  • avancer de 1 entre deux caractères
  • aller au début de la ligne suivante tous les 20 caractères.

Pour le retour à la ligne suivante, vous consulterez la page du module turtle. On pourra par exemple utiliser setx().

Lorsque vous aurez fini l'exercice, vous pourrez parcourir la page wikipedia sur le format pbm et faire le lien avec ce que vous venez de coder. Il s'agit là du principe général de définition d'une image bitmap.

Une solution possible :


from turtle import *


setworldcoordinates(-32,-32, 12,12)

mot = "0000000111111000000000000111101111100000000011000000001110000011100000\
0000001100001100000000000001000110000100000100011001000111100011100011\
1100011100011110001111000001000001000001100000000000000000111100000000\
0000000001110010000000000100111100010000000010001101000110000001100011\
0110001110011100001000110001111110001100000110000000000011000000110000\
00001110000000011110101110000000000001111111000000"

penup()
speed(0)
setposition(-20,0)
shape('turtle')


for i  in range(len(mot)) :
    if i%20 == 0 :  # si est multiple de 20
        setx(-20) # retour en début de ligne
        right(90) # la tortue tourne de 90 degrés vers le bas
        forward(1) # elle avance de 1
        left(90) # elle se réoriente vers la droite
    if mot[i] == '0' :
        dot(3,'white')
        forward(1)
    elif mot[i] == '1' :
        dot(20,'black')
        forward(1)

hideturtle()

exitonclick()

Le résultat de ce code est le suivant :
smiley bitmap