Faire rebondir une balle dans une fenêtre
La structure pour une animation
Dans Processing on utilise deux fonctions particulières : setup()
et draw()
.
setup()
est la fonction qui s'exécute au lancement du programme.
draw()
est une fonction qui s'exécute en boucle (après le setup()
) et ce 60 fois par seconde.
Méthode : La structure
Le programme ci-dessous affiche une fenêtre de
pixels dans laquelle s'affiche une ellipse aux coordonnées (x,y) et de rayon r.
Remarque : Les variables x, y et r ont été déclarées en dehors des fonctions, ce sont des variables "globales" . Pour pouvoir les utiliser dans une fonction, il faut spécifier qu'il s'agit des variables globales déclarées en en-tête avec l'instruction : global x,y,r
.
x=50
y=100
r=10
def setup():
size(300,200)
def draw():
background(0,0,0)
global x,y,r
ellipse(x,y,2*r,2*r)
Remarque : Observer la structure de déclaration d'une fonction et l'indentation.
Simulation : Simulation du mouvement de la balle
Nous allons maintenant animer cela :
Lors de la création de la fenêtre ; 2 variables (non modifiables) sont automatiquement créées : ( width
et height
) qui contiennent respectivement les valeurs 300 et 200.
Pour donner l'illusion de déplacement, nous allons ajouter à x une "vitesse" vx ( par exemple 2pixels) dans le draw()
. Comme celui-ci s'exécute 60 fois par seconde, notre ellipse avancera de 120 pixels en 1 seconde.
De plus, lorsque la balle rentre en contact avec les bords droit ou gauche de la fenêtre on inversera le sens de déplacement.
x=50
y=100
vx=2
r=10
def setup():
size(300,200)
def draw():
background(0,0,0)
global x,y,r,vx
ellipse(x,y,2*r,2*r)
x=x+vx
if x<r or x>width-r:
vx=-vx
Exercice : Modifiez ce programme pour que l'ellipse se déplace aussi verticalement et rebondisse sur les bords haut et bas de la fenêtre.