# tu0351_turtle_random.py ''' Utilisation de listes pour avoir beaucoup de tortues. Dessine plusieurs tortues, elles avancent et tournent aléatoirement. Suite de tu0340_turtle_random.py Adjonction du calcule de l'écart quadratique moyen (donc de la variance). ''' from turtle import * from random import * from math import * # défini la position et la taille de la fenêtre. setup(width=900, height=650, startx=10, starty=15) delay(0) # Pour aller plus vite colormode(255) # mode de définition des couleurs nbTortues = 3 + 4*10 # 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, 0, 255*nn // nbTortues)) # défini la couleur, r, g, b tortueNouvelle.seth(randint(0, 359)) # Information : tortueNouvelle === listeTortues[nn] # Positionne toutes les tortues à l'origine. tortueNouvelle.up() tortueNouvelle.goto(0, 0) tortueNouvelle.down() # La première tortue est de couleur noire, sous forme de cercle petit. listeTortues[0].color("black") listeTortues[0].shape("circle") listeTortues[0].shapesize(0.5) # La deuxième tortue est de couleur rouge, sous forme de cercle, petit. listeTortues[1].color("red") listeTortues[1].shape("circle") listeTortues[1].shapesize(0.5) listeTortues[1].up(); listeTortues[1].goto(-400, -300); listeTortues[1].down() # La deuxième tortue est de couleur rouge, sous forme de cercle, petit. listeTortues[2].color("green") listeTortues[2].shape("circle") listeTortues[2].shapesize(0.5) listeTortues[2].up(); listeTortues[2].goto(-400, -300); listeTortues[2].down() # Accélère l'exécution, en ne traçant le résultat que tous les ... calculs de position # Plus l'argument est grand, plus rapide est l'affichage. tracer(400) #tracer(0) # Pour n'afficher que le résultat final # Chaque tortue avance aléatoirement for nCpt in range(700): moyenX = 0 # Pour calculer la position moyenne des tortues moyenY = 0 # Fait avancer aléatoirement les tortues for nn in range(3, nbTortues): listeTortues[nn].left(randint(-20,20)) listeTortues[nn].forward(1) # Calcul de la position moyenne. moyenX += listeTortues[nn].xcor() moyenY += listeTortues[nn].ycor() moyenX = moyenX / nbTortues # Position moyenne des tortues moyenY = moyenY / nbTortues # Calcule de la variance variance = 0 # Pour calculer la variance (et l'écart quadratique moyen) ecart_moyen = 0 # Calcul de la distance moyenne entre les tortues et leur pos. moyenne for nn in range(3, nbTortues): variance += (listeTortues[nn].xcor() - moyenX)**2 + (listeTortues[nn].ycor() - moyenY)**2 ecart_moyen += sqrt( (listeTortues[nn].xcor() - moyenX)**2 + (listeTortues[nn].ycor() - moyenY)**2 ) variance = variance / nbTortues ecart_moyen = ecart_moyen / nbTortues # Positionne la tortue numéro 0 (la noire) en la position moyenne. listeTortues[0].goto(moyenX, moyenY) # Positionne la tortue numéro 1 (la rouge) en la position de variance. listeTortues[1].goto(nCpt-400, 0.01*variance-300) # Positionne la tortue numéro 2 (la verte) en la position du carré de l'écart moyen. listeTortues[2].goto(nCpt-400, 0.01*ecart_moyen**2-300) update()