premiers pas en processing #4

mercredi 25 mai 2011 | graphisme, programmation, tutorials

Aujourd’hui, on ajoute le « if » (une condition), ce qui permet d’améliorer avec deux lignes les scripts précédents et on aborde la notion de variable.
Nos outils de dessin sont « amusants » mais, premier problème, la souris dessine en permanence, on ne peut pas lever le crayon…

Gribouillis :

void setup(){
 size(400,400);
}

void draw(){
    line(pmouseX,pmouseY,mouseX,mouseY); 
} 

Gribouillis amélioré :

void setup(){
 size(400,400);
}

void draw(){
  if(mousePressed){
    line(pmouseX,pmouseY,mouseX,mouseY); 
  }
}

Explication : on a toujours notre draw en boucle mais si (if) la souris est cliqué (mousePressed) il dessine sinon il n’a pas de consigne donc il ne fait rien.
variante :

void setup(){
 size(400,400);
 smooth();
}

void draw(){
  if(mousePressed){
    stroke(random(0,155));
    line(pmouseX+random(-10,10),
    pmouseY+random(-10,10),
    mouseX,
    mouseY); 
  }
}

La fonction random(a,b) donne un chiffre (à virgule) entre a et b.

Les variables :
On reviendra sur les variables mais voici une première approche :

void setup(){
 size(400,400);
 background(255);
}

void draw(){
  if(mousePressed){
    a=pmouseX;
    b=pmouseY;
    c=mouseX;
    d=mouseY;
    line(a,b,c,d);
  }
}

Ceci marche dans pas mal de langage (javascript, actionscript, php…) mais ici on a une erreur :
« Cannot find anything named « a » »
correction :

void setup(){
 size(400,400);
 background(255);
}

void draw(){
  if(mousePressed){
    int a=pmouseX;
    int b=pmouseY;
    int c=mouseX;
    int d=mouseY;
    line(a,b,c,d);
  }
}

presque pareil :

int a,b,c,d;

void setup(){
 size(400,400);
 background(255);
}

void draw(){
  if(mousePressed){
    a=pmouseX;
    b=pmouseY;
    c=mouseX;
    d=mouseY;
    line(a,b,c,d);
  }
}

C’est quoi « int a » ?
int comme integer,
a est le nom de la variable (a n’est pas un nom pratique pour savoir ce qu’elle contient, mais ici c’est pour faire un raccourci temporaire)
« int a » sera une variable qui stocke un chiffre entier.
C’est quoi int a,b,c,d; ?
c’est la version courte de
int a;
int b;
int c;
int d;

Les deux derniers exemples affichent la même chose, l’un déclare les variables au début, l’autre dans le draw.
comparatif :

int age,taille; //je déclare age et taille

void setup(){
 age=25;
 int taille=180; // je déclare la taille
 println("il mesure "+taille+" cm"); // ça marche
}

void draw(){
  println("et il a "+age+" ans."); //ça marche
  println("il mesure "+taille+" cm"); // taille = 0

  noLoop();
}

à tester :

int age; //je déclare age

void setup(){
 age=25;
 int taille=180; // je déclare la taille
 println("il mesure "+taille+" cm"); // ça marche
}

void draw(){
  println("et il a "+age+" ans."); //ça marche
  println("il mesure "+taille+" cm"); // ça plante

  noLoop();
}

Il est parfois nécessaire de faire des tests, println() permet d’afficher du texte et des variables dans la console de Processing (cadre du bas).
à retenir : si les variables sont déclarées dans des fonctions (draw, setup, autres), elles sont lisibles que dans leurs fonctions (on parle de visibilité des variables) ;
si elles sont déclarées hors fonction (à la racine ou au début par convention), elles sont lisibles dans toutes les fonctions (draw, setup…).

une autre possibilité :

int age=25;

void setup(){
  println("il a "+age+" ans."); 
}

void draw(){
  println("il a "+age+" ans.");
  noLoop();
}


tags :

Comments are closed.