Le premier concept à maîtriser est connu sous plusieurs noms, mais nous l’appelerons ici une méthode pour respecter la nomenclature du langage de programmation Java (petit rappel : Processing est une simplification du langage Java).


methodes / a.k.a. Fonctions / a.k.a. Routines

Définition : une méthode est une liste d’instructions à appliquer chaque fois que le nom de la méthode est invoqué. Dans un langage moins barbare, on peut dire que les méthodes sont des sortes de mots magiques : chaque fois que l’ordinateur (le processeur) rencontrera ce mot dans notre programme, il ira faire l’action décrite dans ce mot magique.


Nous avons déjà vu un certain nombre de méthodes dans Processing. Par exemple, quand vous tapez :

line(20,30,70,10);

…vous êtes en réalité en train de faire appel à une méthode pré-existante, écrite pour vous par les concepteurs de Processing pour vous faciliter la tâche. Il s’agit une méthode pour faire quelque chose avec l’ordinateur, autrement dit une suite d’instructions qu’on peut appeler en juste tapant un seul mot.

Une autre méthode que nous avons vu s’appelle println( );. Cette méthode sait afficher en bas de votre fenêtre de programmation des informations sur votre programme (ou des bêtises que vous avez envie d’écrire là-dedans, peu importe).

Au lieu de faire appel à des methodes pré-existantes, nous pouvons créer des methodes nous-mêmes et les appeler dans nos programmes. Voici un exemple :


void setup() {
  // définir la taille de l'animation
  size(200,200);
  // demander au processeur d'appeler notre méthode
  superCoolCercle();
}

void superCoolCercle() {
  // pour l'instant il n'y a qu'une seule instruction dans notre méthode
  ellipse(100,100,50,50);
}

Nous venons d’inventer une méthode, que nous avons nommé superCoolCercle. Chaque fois que le processeur rencontre ce nom, il executera les instructions contenues dans notre méthode. Si on écrit trois fois notre méthode, le processeur l’executera trois fois.

On peut jouer ce jeu de poupées russes autant qu’on veut. Voici notre programme avec quelques méthodes en plus :


void setup() {
  size(200,200);
  faireUnTruc();
}

void faireJeNeSaisQuoi() {
  superCoolCercle();
}

void faireUnTruc() {
  faireJeNeSaisQuoi();
}

void superCoolCercle() {
  ellipse(100,100,100,100);
}

Il n’est pas important que les méthodes suivent l’ordre dans lequel ils seront activés dans notre programme. Au contraire, un programme va d’habitude sauter partout dans son activité.

Pour fabriquer nos propres méthodes, il faut juste avoir:

  • ce bizarre void (on n’explique pas pour l’instant)
  • le nom de la méthode
  • des parenthèses (pour l’instant vides)
  • une accolade ouverte
  • les instructions de notre méthode
  • une accolade fermée

Nous pouvons créer autant de méthodes que nous voulons, ce qui plus tard nous permettra de faire des programmes complexes à partir de petites méthodes qui seront comme des modules simplifiés, emboîtées les unes dans les autres. On construira ce programme de façon plus sain, en utilisant des mots simples (dessiner, rebondir, explosion, attendre, etc) que nous définirons dans notre programme.

  • Alors, vous avez noté quelque chose dans notre discussion des méthodes? A côté de notre méthode superCoolCercle( ) nous avons crée une méthode nous-mêmes mais nous n’avons pas choisi nous-mêmes le nom. Il s’agit de la fameuse méthode setup( ) que nous avons vu depuis le chapitre dernier sur le mouvement.

Si nous revenons sur notre définition, nous savons qu’elle est elle-aussi une méthode : il y a le bizarre void, il y a le nom, il y a les parenthèses vides, il y a des accolades, etc. mais à quel moment cette méthode est appelé ? Qui est-ce qui appelle son mot magique ?

Au fait, il existe un certain nombre de méthodes que Processing exécutera à votre place : vous n’avez pas besoin de les appeler pour qu’ils fonctionnent. On peut les nommer des méthodes automatiques, ou des méthodes du processeur : il les appelera à votre place.

Pour comprendre ce qu’on vient de dire, voici quelques exemples de méthodes automatiques que vous pouvez tester. Le premier utilisera la méthode setup() pour changer la couleur de fond quand l’animation démarrera :


void setup() {
  // choisir une couleur de fond au hasard
  background( random(0,255), random(0,255), random(0,255) );
}

C’est comme si nous avons appelé la méthode setup() directemment en appuyant sur lecture : c’est comme si le bouton lecture contient le code setup();

Ensuite, on peut écrire les mêmes instructions à l’intérieur d’une autre méthode automatique, ce qui donnera évidemment un autre comportement :


void draw() {
  // choisir une couleur de fond au hasard
  background( random(0,255), random(0,255), random(0,255) );
}

Et puis, pour terminer, prenons une méthode automatique très pratique : il s’agit d’une méthode que le processeur appelera automatiquement, chaque fois que la souris change de position…


void draw() {

}

void mousemoved() {
  // choisir une couleur de fond au hasard
  background( random(0,255), random(0,255), random(0,255) );
}

  • Avant d’avancer au deuxième, résumons le premier concept fondamental : la méthode. Une méthode contient une liste d’actions à executer chaque fois qu’il est appellé. Nous pouvons nous mêmes créer des méthodes et les appeler dans notre code en écrivant tout simplement son nom. Il existe ensuite des méthodes automatiques, qui seront appelé par le processeur lui-même, au démarrage de l’animation, par exemple, ou quand l’utilisateur bougera son souris. Ces méthodes sont décrites de la même mannière que nos propres méthodes, mais nous laisserons à la machine le soin de les appeler.

Exercise

Essayer de modifier un de vos anciens programmes, en replaçant une partie du programme à l’intérieur d’une méthode avec le nom de votre choix.