Créer un pavage de cube Turtle

louisv8 -  
 louisv8 -
Bonjour,

Je suis débutant en programmation et j'ai pour mission de créer un pavage de cubes, cubes formés par 3 losanges de couleurs différentes, j'ai créé une fonction "cube" qui me crée un cube avec les coordonées en paramètres + la longueur des arrêtes, mais je n'ai pas réussis à ajouter un paramètre couleurs dans lequel je rentre un tuple de couleurs et mon cube est alors formé de 3 couleurs différentes?

Voici mon code :

""""""""""""""""""""""""""""""""""""""""
import turtle
#coin haut gauche - 361 305

def cube(abscisse_centre, ordonnee_centre, longueur_arete):
    turtle.up()
    turtle.goto(abscisse_centre, ordonnee_centre)
    turtle.down()

    for i in range(3):  # à chaque itération, trace un losange
        angle = 120
        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()
    turtle.done()

""""""""""""""""""""""""""""""""""""""""

J'ai essayé en ajoutant un paramètre couleur et en exécutant la fonction tel que le dernier paramètre était ('red', 'blue', 'green') avec un turtle.color(colors[n]), n += 1 mais ça ne marche pas :(

Configuration: Windows / Chrome 77.0.3865.90

2 réponses

  1. khrug
     
    Bonsoir.

    Je ne connais pas du tout turtle, mais si tu ouvres un terminal python, que tu importes turtle et qu'ensuite tu entres
    help(turtle.begin_fill)


    Tu aurais vu ceci.

    Help on function begin_fill in module turtle:

    begin_fill()
    Called just before drawing a shape to be filled.

    No argument.

    Example:
    >>> color("black", "red")
    >>> begin_fill()
    >>> circle(60)
    >>> end_fill()
    (END)


    La réponse était là :D

    Donc, ton code pourrait simplement devenir.

    import turtle
    #coin haut gauche - 361 305
    
    def cube(abscisse_centre, ordonnee_centre, longueur_arete, colors):
        turtle.up()
        turtle.goto(abscisse_centre, ordonnee_centre)
        turtle.down()
    
        for i in range(3):  # à chaque itération, trace un losange
            angle = 120
            turtle.color(colors[i])
            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()
        turtle.done()
    
    cube(100, 100, 40, ('red', 'yellow', 'blue'))
    0
    1. louisv8
       
      Merci beaucoup pour ton aide!
      Bonne soirée!!
      0