Cette animation utilise la notion de tableau.

À faire vous même 6.1

Saisir le code suivant :


tabBalles = []
nbBalles = 60
def setup():
  size(400,400)  
  for i in range(nbBalles):
      balle = []
      # indice 0 : abscisse du centre de la balle
      balle.append(random(20,380))
      # indice 1 : ordonnée du centre de la balle
      balle.append(random(20,380))
      # indice 2 : abscisse du vecteur vitesse de la balle
      balle.append(random(-3,3))
      # indice 3 : ordonnée du vecteur vitesse de la balle
      balle.append(random(-3,3))
      tabBalles.append(balle)

def draw():
    background(240);
    for b in tabBalles:
        deplace_balle(b)
        affiche_balle(b)

def deplace_balle(balle):
    if balle[0] < 20 or balle[0] >380:
        balle[2]=-balle[2]
    if balle[1] < 20 or balle[1] >380:
        balle[3]=-balle[3]
    balle[0] += balle[2]
    balle[1] += balle[3]
                  
def affiche_balle(balle):
   ellipse(balle[0],balle[1],40,40)
		

Vous devriez obtenir l'animation suivante :

Explications sur le code

Les informations de chaque balle (position : x et y, vitesse déplacement : composante x et y) sont stockées dans un tableau nommé balle de taille 4.

L'ensemble des balles est stocké dans un tableau nommé tabBalles.
Le tableau tabBalles est donc une matrice de dimensions nbBallesx 4.

La détection sur un des 4 bords se fait avec des conditions portant sur l'abscisse (pour les bords gauche et droit) et sur l'ordonnée des bords (haut et bas) du centre de la balle.

En cas de détection d'un bord, on modifie le vecteur vitesse :

afin de réaliser un rebond respectant la loi physique de la réflexion (angle incident = angle réfléchi).


À faire vous même 6.2

Modifier ce programme afin que le rayon, la couleur et la transparence des balles soient aléatoires afin d'obtenir ce type d'animation.
Le rayon doit être compris entre 2 et 20 pixels.