Premier exemple

Saisissez, analysez et testez ce code

1
# On définit des variables globales
2
# qui seront visibles de tout le programme
3
# et modifiées dans la fonction draw
4
rayon=2
5
vitesse=2
6
7
def setup():
8
    size(400,400)
9
    noStroke();
10
    fill(128,50,240);
11
12
def draw():
13
    global rayon,vitesse # On accède aux variables rayon et vitesse pour les modifier
14
    background(240)
15
    ellipse(200,200,2*rayon,2*rayon)
16
    if rayon>200 or rayon<2 :
17
        vitesse = -vitesse
18
    rayon = rayon+vitesse

ComplémentQuelques explications

Nous nous intéresserons principalement à la fonction draw() qui est appelée environ 60 fois par secondes (selon la puissance de la machine).

Le background(240) permet d'effacer l'écran à chaque nouvelle image (juste avant de redessiner le disque". Le principe est donc simple : à chaque image, on efface tout et on redessine.

Remarquez que l'initialisation des variables rayon et vitesse ont été faites au début du programme, hors de toute fonction. Si ces déclarations avaient été faites dans la fonction setup() nous aurions alors eu des variables locales à la fonction setup(), c'est à dire non visibles depuis draw(). Or le principe de l'animation est ici, à chaque affichage d'une image, d'augmenter la taille du cercle.

La déclaration global rayon,vitesse dans la fonction draw() est importante : elle permet d'enregistrer dans les variables globales rayon et vitesse les modifications faites à ces variables dans la fonction et ainsi, se rappeler des valeurs lors du prochain appel de la fonction draw().

RemarqueModifier la fréquence de rafraîchissement des images

Par défaut, PyProcessing essaye de maintenir 60 FPS ("essaye" car si les éléments à afficher sont trop complexes, le nombre de FPS diminue).

La fonction frameRate() permet d'imposer le nombre de FPS. Cette fonction prend un paramètre, le nombre de FPS désiré.

Pour tester, ajoutez la ligne suivante dans la fonction setup() du programme précédent :

1
frameRate(5)

L'animation se déroule alors beaucoup moins vite car la fonction draw() n'est plus appelée que 5 fois par seconde.