# tu0320_turtle_listes.py ''' Utilisation de listes pour avoir beaucoup de tortues. Dessine plusieurs tortues, chacune se dirige vers sa voisine de gauche ''' from turtle import * from time import sleep # pas important, juste pour mettre des pauses d'exécutions. from math import * # défini la position et la taille de la fenêtre. setup(width=900, height=700, startx=10, starty=15) delay(0) # Pour aller plus vite colormode(255) # mode de définition des couleurs nbTortues = 50 # Défini le nombre de tortues désirées listeTortues = [] # Défini une liste vide # Boucle de création de nouvelles tortues for nn in range(nbTortues): # va de 0 à nbTortues-1 tortueNouvelle = Turtle(shape="turtle") # Création d'une nouvelle tortue listeTortues.append(tortueNouvelle) # Ajoute dans la liste, une référence à la tortue. tortueNouvelle.speed(0) # Vitesse maximale de la tortue tortueNouvelle.color((255 - 255*nn // nbTortues, 255, 255*nn // nbTortues)) # défini la couleur, r, g, b # Positionne les tortues sur un cercle for nn in range(nbTortues): listeTortues[nn].up() listeTortues[nn].goto(290 * cos(2*pi*nn/nbTortues), 290 * sin(2*pi*nn/nbTortues)) listeTortues[nn].down() # Ajoute à la fin de la liste une référence à la première tortue listeTortues.append(listeTortues[0]) # Chaque tortue pointe vers sa voisine de gauche for nn in range(nbTortues): x1, y1 = listeTortues[nn].xcor(), listeTortues[nn].ycor() # Position de la tortue nn listeTortues[nn+1].seth(listeTortues[nn+1].towards(x1, y1)) sleep(1) # Petite pause de 1 seconde, pour voir l'orientation des tortues # Chaque tortue avance vers sa voisine de gauche x1 = 0; x2 = 10; y1 = 0; y2 = 10 while abs(x1-x2) + abs(y1-y2) > 2: for nn in range(nbTortues): x2, y2 = x1, y1 x1, y1 = listeTortues[nn].xcor(), listeTortues[nn].ycor() # Position de la tortue nn listeTortues[nn+1].seth(listeTortues[nn+1].towards(x1, y1)) listeTortues[nn+1].forward(1)