Turtle problème de boucle

Fermé
louisv8 - Modifié le 14 oct. 2019 à 10:53
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 14 oct. 2019 à 07:02
Bonjour à tous et à toutes,

Je dois réaliser un projet Python où il faut faire une "oeuvre" style Vasarely dans Turtle, pour celà je dois d'abord réaliser une fonction cube, qui me dessine un cube composé de 3 losanges de différentes couleurs, ensuite une fonction pavage qui remplis ma fenêtre turtle de lignes de cubes collés les un aux autres. J'ai réussis à créer ma fonction cube que voici :
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
def cube(abscisse_centre, ordonnee_centre, longueur_arete, color1, color2, color3):
    turtle.up()
    turtle.goto(abscisse_centre, ordonnee_centre)
    turtle.down()
    #losange1
    angle = 120
    turtle.color(color1)
    turtle.begin_fill()
    for j in range(4):  # à chaque itération, trace un segment
        turtle.forward(longueur_arete)
        turtle.left(angle)
        angle = 180 - angle
    turtle.right(120)
    turtle.end_fill()
    #losange2
    angle = 120
    turtle.color(color2)
    turtle.begin_fill()
    for j in range(4):  # à chaque itération, trace un segment
        turtle.forward(longueur_arete)
        turtle.left(angle)
        angle = 180 - angle
    turtle.right(120)
    turtle.end_fill()
    #losange3
    angle = 120
    turtle.color(color3)
    turtle.begin_fill()
    for j in range(4):  # à chaque itération, trace un segment
        turtle.forward(longueur_arete)
        turtle.left(angle)
        angle = 180 - angle
    turtle.right(120)
    turtle.end_fill()

    turtle.hideturtle()



Ma fonction marche pour un seul cube mais lorsque j'essaie de l'exécuter dans une boucle for avec différentes abscisses, le premier cube se dessine et puis plus rien... Si une âme charitable avait la solution à mon probème...
for i in range (10):
    decalage = 100
    cube(0 + decalage, 0, 100, 'red', 'blue', 'black')
    decalage += 100

c'est le code que j'ai voulu exécuter pour créer 11 cubes espacés mais rien ne se passe après la création du 2ème ...


Merci d'avance pour l'aide!

EDIT : Ajout des balises de code





Configuration: Windows / Chrome 77.0.3865.90

1 réponse

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
14 oct. 2019 à 07:02
Bonjour
Et si tu deplacais l'initialisation de ta variable decalage avant ta boucle ?
Cela éviterait que tu ne place 11 fois ton cube au même endroit... :-)
0