*
C'est que d'la Balle
Balle filante
La balle file de gauche à droite.

Reprenons la balle simple pour transformer le programme en balle qui défile toute seule.

La programmation est très simple :

  • on défini la taille de l'écran dans "setup",
  • on dessine une ellipse ronde (!) de rayon fixe dont les coordonnées (x, y) sont celles de la souris : (mouseX, mouseY),

Le principe pour défiler est de remplacer la position x de la souris par une position qui part de zéro et augmente à chaque dessin :

Avant la déclaration de setup et draw :

  • on défini posX à 0,

dans setup() :

  • on défini la taille de l'écran,

dans draw() :

  • on ajoute 1 à posX.
  • on dessine l'ellipse en position (posX, mouseY).

Résultat : la balle apparaît à gauche (x=0) et défile vers la droite (mais suit la souris de haut en bas). Arrivée à droite, c'est fini. Hm! bof.

note : c'est très lent, on pourrait ajouter une variable vitX qui serait ajoutée à posX afin d'aller + vite (vitX=5, par exemple).

En fait, la balle continue indéfiniement, mais hors de l'écran.

 

Le programme balle3.pde ci-dessous.

Rebond de coté
La balle change de direction lorsqu'elle arrive sur un bord : elle rebondi.

Pour faire un rebond, il nous faut savoir où sont les bords et dans quelle direction avance la balle.

Si c'est vers la droite, la direction est positive, sinon elle est négative.

Pour simplifier la compréhension, on aura deux nouvelles variables : vitesse (vitX) et direction (dirX).

La vitesse pour accélérer ou ralentir le mouvement comme on veut.
La direction qui permet de déplacer la balle vers la droite (vitesse*direction>0) ou vers la gauche (vitesse*direction<0).

 

Bon, on y va.

La programmation est maintenant la suivante :

Avant la déclaration de setup et draw, on défini les variables globales :

  • largeur = 1000 : largeur de l'écran,
  • hauteur = 800 : hauteur de l'écran,
  • posX = 0,
  • dirX = 1 (>0 donc vers la droite),
  • vitX = 5 (ça va plus vite que 1),

dans setup() :

  • on défini la taille de l'écran,

dans draw() :

  • d'abord on teste posX pour savoir si il faut inverser la direction (l'astuce est ici).
  • si il faut inverser la direction, on fait dirX=-dirX, c'est tout.
  • ensuite,on calcule la nouvelle position (posX=posX+vitX*dirX).
  • et on dessine l'ellipse en position (posX, mouseY).

Résultat : la balle apparaît à gauche (x=0), défile vers la droite et rebondi. en arrivant à gauche, elle rebondi aussi et fait des aller/retour horizontalement

 

Le programme balle4.pde ci-dessous.

Rebondir de tous les bords
La balle avance en diagonale et rebondi au bord de l'écran.

Le travail effectué selon l'axe X est maintenant refait selon l'axe Y.

La balle se déplace donc en diagonale et rebondi sur chaque bord (voir le source ci-dessous).

Amusez vous maintenant à modifier ce programme pour changer la forme ou la taille de la balle entre deux limites (ça ressemble au déplacement) et à lui donner une couleur variable ou aléatoire ...

Toutes les variantes sont possibles.