Nous allons faire un programme "réactif" à un évènement qui est un clic effectué avec la souris dans la fenêtre. Si on clique dans la partie supérieure de la fenêtre alors la couleur du fonds devient vert, sinon elle devient rouge.
Voilà le programme
void setup(){
size(400,400);
}
void draw(){
if(mouseY > height/2){
background(0,200,0);
}
else{
background(255,0,0);
}
line(0,height/2,width,height/2);
}
Tester le programme
Mettre l'instruction line() avant le bloc if(). Que se passe -t-il ?
Nous aurons besoin de la fonction random() pour simuler le hasard dans nos programmes (aller voir la référence pour plus de précisions).
Attention! la fonction random() retourne un nombre à virgule dont le type dans le langage Processing est soit float soit double (voir reférence)
float a;
double b;
void setup(){
a = random(2);
b = random(2);
println(a);
println(b);
}
Executez le programme ci-dessus qu'observez vous ?
Un des intérêts de la fonction random() sera de nous aider à construire des ensembles de valeurs aléatoires pour tester nos programmes
Imaginons que l'on veuille faire un programme qui simule le jeu du Chevalier de Méré : On lance 4 dés si on a au moins un six on a gagné sinon on a perdu
PROBLEME : random() retourne un float ou un double or le résultat d'un dé est un entier (int). Comment faire ?
Tester le programme suivant
float a;
void setup(){
a = random(5);
println(a);
println((int)a);
println(int(a));
}
On observe que faire (int)a ou int(a) transforme le contenu de a qui est de type float en type int. On dit que l'on a fait un cast
Revenons sur la discussion au sujet de l'existence des solutions de l'équation générale du second degré
Si Delta > 0 alors {deux solutions} sinon{ si delta = 0 alors {une solution }sinon {pas de solution} }
Première Traduction
void setup(){
.....
if(delta > 0){
println("Deux solutions");
}
else{
if(delta = 0){
println("Une solution");
}
else{
println("Pas de solution");
}
}
}
Deuxième Traduction
void setup(){
.....
if(delta > 0){
println("Deux solutions");
}
else if(delta = 0){
println("Une solution");
}
else{
println("Pas de solution");
}
}
}
les deux traductions sont correctes mais la deuxième est plus concise grâce au else if (voir Référence)
Si la moyenne du bac est supérieure ou égale à 16 alors on a la mention très bien, si elle est entre 14 et 16 on a la mention bien , si elle est entre 12 et 14 on a la mention assez bien si elle est entre 10 et 12 mention passable, si elle est entre 8 et 10 on passe à l'oral sinon on est refusé. En utilisant la fonction random() pour générer aléatoirement une note entière entre 0 et 20 , faire un programme qui affiche en fonction de la note, la mention au bac
Losqu'une variable de type primitif (char ou int) peut prendre un petit nombre de valeurs, par exemple le résultat d'un lancer de dé, alors au lieu d'utiliser plusieurs if(...) else if(...) à la suite, on utilise switch(...)case. Regardons cela sur un exemple.
On lance un dé. En fonction du résultat on veut dessiner au centre d'une fenêtre 600x400 la face d'un dé correspondant au résultat
Voici le début du code . A compléter
int de;
void setup(){
size(600,400);
mode(CENTER);
de = (int)random(0,6)+1;
switch(de){
case 1:
fill(255,0,0);
rect(width/2,height/2,100,100);
ellipse(width/2,height/2,10,10);
break;
case 2:
fill(255,0,0);
rect(width/2,height/2,100,100);
ellipse(width/2-50,height/2+50,10,10);
ellipse(width/2+50,height/2-50,10,10);
break;
case 3:
...à compléter...
}
Bien comprendre le rôle de break (voir Référence)
S'il y a un point central c'est un trou dans la glace et les autres points sont des ours polaires.
Par exemple lorsqu'il y a 3 points, il y a 1 trou et deux ours
De l'autre côté de la glace (les points de la face opposée) il y a des poissons
Donc dans l'exemple précédent il y a 4 poissons
Faire un programme qui génère au hasard un nombre entier entre 1 et 6 et qui affiche à l'écran le message suivant (sur deux lignes)
Le résultat du dé est (de)
Il y a (nombreTrous) trous, (nombreOurs) ours et (nombrePoissons) poissons
Vous aurez quatre variables globales de, nombreTrous,nombreOurs et nombrePoissons
Il s'agit de faire un programme qui simule une partie de ce jeu entre deux joueurs Joueur1 et Joueur2
Voir les règles ici
Chaque élément gagne contre deux autres éléments et perd contre deux autres. En disposant judicieusement les 5 éléments sur un cercle et en les ordonnant on constate que chaque élément gagne contre les deux éléments qui le précédent et perd contre les deux qui le suivent
Ainsi PAPER (2) bat ses deux prédécesseurs SPOCK(1) et ROCK(0) et perd contre ses deux successeurs LIZARD(3) et SCISSORS(4)
Vérifier que pour savoir qui de Joueur1 ou Joueur2 a gagné il suffit de calculer :
Joueur1 - Joueur2
Puis si ce nombre est négatif lui rajouter 5
Le nombre obtenu nous renseigne sur la position de Joueur2 par rapport à Joueur1 sur le cercle
Télécharger le squelette de code à compléter entre les commentaires ici C'est un fichier texte que vous copierez et collerez dans l'environnement processing