Lignes de code
Voici des captures d'écran de notre programme suivi de nos lignes de code. Si vous souhaitez l'essayer, il suffit de copier ces lignes sur processing et d'y insérer les images que nous avons utilisé, que vous trouverez dans la partie "Ressource".
Captures d'écran de l'exécution du programme :
Lignes de code :
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*; //Ces lignes servent à importer la bibliothèque Minim, responsable de la musique dans le jeu.
boolean clic = false;
boolean clic2 = false;
boolean clic3 = false; //Ces 3 booléens sont utilisés pour les transitions, clic pour celle du labyrinthe, clic2 pour celle du cache-cache et clic3 pour le panier
PImage img2;
PImage img3; //Ces variables permettent de déclarer l'existence de deux images, img2 et img3, qui seront ensuite charger par le programme et lier à ces noms.
PImage salle; //définition d'une image nommée salle
// définition des variables boolean, ici toutes vraies
boolean tasse = true;
boolean horloge = true;
boolean affiche = true;
boolean veste = true;
boolean telephone = true;
boolean rideau1 = true;
boolean rideau2 = true;
boolean tiroirs = true;
boolean lampe = true;
Minim minim; //On crée un objet (minim) de la classe Minim.
AudioPlayer music; //On crée aussi un objet (music) de la classe Audioplayer, qui contient les données audio.
int a = 1;
int c = 18;
int documents = 0; //On définit les variables a et c, responsables des coordonnées en abscisse et en ordonnée du personnage du labyrinthe, (les variables x et y étant déjà prises dans un autre programme), ainsi que la variable documents, responsable du nombre de documents récupérés dans le document.
int [] vitesseY; //tableau d'entier nommé vitesseY
int [] x; //tableau d'entier nommé x
int [] y; //tableau d'entier nommé y
int attrape;
void setup() {
img2 = loadImage("facile.gif");
img3 = loadImage("JC3.png"); //Ici, nous chargeons les images du labyrinthe et du personnage.
size(img2.width, img2.height); //On ajuste alors la taille de la fenêtre avec celle du labyrinthe.
salle=loadImage ("bletchley-park-library.jpg"); //téléchargement de l'image
//les tableaux d'entiers pourront contenir 20 valeurs
x=new int [20];
y=new int [20];
vitesseY=new int [20];
attrape=0; //Lors de l'initialisation, attrape=0
for (int i=0; i<20; i++) { //Pour i commence à 0, est strictement inférieur à 20 et i prend la valeur i+1 à chaque tour
x[i]=(int)random(10, 1100); //x[i] prends une valeur décimale et entière comprise entre 10 et 1100
y[i]=-300; //y[i] prends la valeur -300
vitesseY[i]=(int)random(2, 5); //vitesseY[i] prends une valeur décimale et entière comprise entre 2 et 5
}
minim = new Minim(this);
music = minim.loadFile("Sleep Away.mp3"); //On charge ensuite la musique dans le programme
music.play(); // Et on la joue.
}
void draw() {
if (clic==false) { //On vérifie la valeur de clic (établie comme false) pour pouvoir exécuter la boucle.
background(0);
textSize(24);
fill(255);
text("Commencer", 550, 410); //Si clic est faux, alors le fond est noir, le texte « Commencer » est écrit en blanc et en police 24 aux coordonnées indiquées.
if (mousePressed) {
if (mouseX>550) {
if (mouseX<690) {
if (mouseY>390) {
if (mouseY<410) {
clic=true; //Et si on clique dans le cadre d'interaction défini autour du texte, clic devient vrai.
}
}
}
}
}
}
if (clic==true) { //Le fait de cliquer sur « Commencer » rend clic vrai et active cette deuxième boucle.
image(img2, 0, 0); //On affiche l'image du labyrinthe en fond.
labBouger();
sortie();
documents(); //On appelle les fonctions qui vont être utilisées pour le labyrinthe.
image(img3, a, c, 17, 17); //On affiche l'image du personnage au début du labyrinthe, avec ses coordonnées variables pour lui permettre de se mouvoir.
fill(255);
text("Documents :" +documents, 550, 910); //On affiche le texte « Documents » en-dessous du labyrinthe en blanc, avec à côté le nombre de documents trouvés.
}
if (clic3==true) {
stroke(0);
background(#60F00F); //Couleur de fond
// Bouton permettant de recommencer le jeu
rect(1130, 10, 65, 30);
fill(0); // rempli en blanc
textSize(20); // taille du texte
text("RETRY", 1132, 35); //texte et position du texte
fill(255); // couleur du texte
rect(mouseX-75, 800, 150, 100); //Position du rectangle
textSize(24); // taille du texte
text("nombre de papiers attrapés= "+attrape, 10, 30);//texte et position du texte
for (int i=0; i<20; i++) { //Pour i commence à 0, est strictement inférieur à 20 et i prend la valeur i+1 à chaque tour
y[i]=vitesseY[i]+y[i]; // y[i] prends la valeur vitesseY[i]+y[i]
rect(x[i], y[i], 63, 90); // position du rectangle
}
for (int i=0; i<20; i++) { //Pour i commence à 0, est strictement inférieur à 20 et i prend la valeur i+1 à chaque tour
if (mouseX<x[i]+75) { //si le curseur de la souris a une position horizontale inférieure à la somme de x[i]+75
if (mouseX>x[i]-75) { // et si le curseur de la souris a une position horizontale supérieure à la différence de x[i]-75
if (y[i]>710) { // et si y[i] est supérieur à 710
if (y[i]<810) { // et si y[i] est inférieur à 810
y[i]=9999; //alors y[i] prends la valeur 9999
if (y[i]==9999) { //et si y[i] est égal à 9999
attrape= attrape+1; //alors attrape prends la valeur attrape+1
}
}
}
}
}
}
if (attrape>19) { //si attrape est supérieur à 19
fill(0); //remplissage en noir
rect(320, 190, 580, 100); // position et taille du rectangle
fill(255);//couleur du texte
textSize(40); //taille du texte
text("Bravo ! Vous avez gagné !", 350, 250); //texte et position du texte
}
if (mousePressed) { //si la souris est enfoncée
if (mouseX>1130) { //et si le curseur à l'horizontal est supérieur à 1130
if (mouseX<1200) { //et si le curseur à l'horizontal est inférieur à 1200
if (mouseY>10) { //et si le curseur à la vertical est supérieur à 10
if (mouseY<40) {//et si le curseur à la vertical est inférieur à 40
attrape=0; //alors attrape est égal à 0
for (int i=0; i<20; i++) { // et pour i commence à 0, est strictement inférieur à 20 et i prend la valeur i+1 à chaque tour
y[i]=-300; // y[i] prends la valeur 300;
y[i]=vitesseY[i]+y[i]; //y[i] prends la valeur vitesseY[i]+y[i];
rect(x[i], y[i], 63, 90); //position et taille du rectangle
}
}
}
}
}
}
}
if (clic2==true) {
noStroke();
fill(0);
rect(0, 800, 1200, 150); //taille et position du rectangle
background(0); //fond de la fenêtre noir
image(salle, 100, 100); //taille et position de l'image
fill(255); //couleur du texte
textSize(25); //taille du texte
text("Tasse", 110, 730); //texte et position du texte
text("Horloge", 300, 730); //texte et position du texte
text("Affiche", 500, 730); //texte et position du texte
text("Veste rouge", 700, 730); //texte et position du texte
text("Téléphone", 980, 730); //texte et position du texte
text("Tiroirs de rangement", 110, 780); //texte et position du texte
text("Lampe à huile", 470, 780); //texte et position du texte
text("Rideau 1", 750, 780); //texte et position du texte
text("Rideau 2", 950, 780); //texte et position du texte
textSize(50); //taille du texte
text("Trouvez ces objets :", 350, 75); //texte et position du texte
noFill(); //pas de remplissage
if (mouseX>720) { //si le curseur de la souris à l'horizontal est supérieur à 720
if (mouseX<875) { //et si le curseur de la souris à l'horizontal est inférieur à 875
if (mouseY>400) { //et si le curseur de la souris à la verrical est supérieur à 400
if (mouseY<500) {//et si le curseur de la souris à la verrical est inférieur à 500
if (mousePressed) { //et si la souris est enfoncée
tasse=false; //alors le boolean tasse est faux
}
}
}
}
}
if (tasse==false) { //si le boolean tasse est faux
fill(0); //remplissage noir
noStroke(); //pas de contour
rect(90, 680, 100, 60); //taille et position du rectangle
noFill(); //pas de remplissage
strokeWeight(2); //épaisseur du contour
stroke(#FF081C); //couleur du contour
ellipse(825, 450, 80, 80); //taille et position du cercle
}
if (mouseX>200) { //si le curseur de la souris à l'horizontal est supérieur à 200
if (mouseX<250) { //et si le curseur de la souris à l'horizontal est inférieur à 250
if (mouseY>160) { //et si le curseur de la souris à la vertical est supérieur à 160
if (mouseY<220) { //et si le curseur de la souris à la vertical est inférieur à 220
if (mousePressed) { //et si la souris est enfoncée
horloge=false; //alors le boolean horloge est faux
}
}
}
}
}
if (horloge==false) { //si le boolean horloge est faux
fill(0);//remplissage noir
noStroke();//pas de contour
rect(290, 680, 120, 60);//taille et position du rectangle
noFill();//pas de remplissage
stroke(#FF081C);//couleur du contour
ellipse(230, 200, 80, 80);//taille et position du cercle
}
if (mouseX>480) { //si le curseur de la souris à l'horizontal est supérieur à 480
if (mouseX<550) {//et si le curseur de la souris à l'horizontal est inférieur à 550
if (mouseY>110) {//et si le curseur de la souris à la vertical est supérieur à 110
if (mouseY<220) {//et si le curseur de la souris à la vertical est inférieur à 220
if (mousePressed) {//et si la souris est enfoncée
affiche=false;//alors le boolean affiche est faux
}
}
}
}
}
if (affiche==false) {//si le boolean affiche est faux
fill(0);
noStroke();
rect(490, 680, 120, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(515, 165, 80, 80);//taille et position du cercle vide dont le contour est rouge
}
if (mouseX>1000) {//si le curseur de la souris à l'horizontal est supérieur à 1000
if (mouseX<1120) {//et si le curseur de la souris à l'horizontal est inférieur à 1120
if (mouseY>340) {//et si le curseur de la souris à la vertical est supérieur à 340
if (mouseY<410) {//et si le curseur de la souris à la vertical est inférieur à 410
if (mousePressed) {//et si la souris est enfoncée
veste=false;//alors le boolean veste est faux
}
}
}
}
}
if (veste==false) {//si le boolean veste est faux
fill(0);
noStroke();
rect(700, 680, 145, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(1080, 380, 80, 80);//taille et position du cercle vide dont le contour est rouge
}
if (mouseX>440) {//si le curseur de la souris à l'horizontal est supérieur à 440
if (mouseX<480) {//et si le curseur de la souris à l'horizontal est inférieur à 480
if (mouseY>130) {//et si le curseur de la souris à la vertical est supérieur à 130
if (mouseY<220) {//et si le curseur de la souris à la vertical est inférieur à 220
if (mousePressed) {//et si la souris est enfoncée
lampe=false;//alors le boolean lampe est faux
}
}
}
}
}
if (lampe==false) {//si le boolean lampe est faux
fill(0);
noStroke();
rect(470, 730, 170, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(450, 180, 80, 80);//taille et position du cercle vide dont le contour est rouge
}
if (mouseX>340) {//si le curseur de la souris à l'horizontal est supérieur à 340
if (mouseX<390) {//et si le curseur de la souris à l'horizontal est inférieur à 390
if (mouseY>340) {//et si le curseur de la souris à la vertical est supérieur à 340
if (mouseY<390) {//et si le curseur de la souris à la vertical est inférieur à 390
if (mousePressed) {//et si la souris est enfoncée
telephone=false;//alors le boolean lampe est faux
}
}
}
}
}
if (telephone==false) {
fill(0);
noStroke();
rect(970, 680, 140, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(370, 350, 80, 80);//taille et position du cercle vide dont le contour est rouge
}
if (mouseX>900) {//si le curseur de la souris à l'horizontal est supérieur à 900
if (mouseX<980) {//et si le curseur de la souris à l'horizontal est inférieur à 980
if (mouseY>270) {//et si le curseur de la souris à la vertical est supérieur à 270
if (mouseY<320) {//et si le curseur de la souris à la vertical est inférieur à 320
if (mousePressed) {//et si la souris est enfoncée
tiroirs=false;//alors le boolean tiroirs est faux
}
}
}
}
}
if (tiroirs==false) {//si le boolean tiroirs est faux
fill(0);
noStroke();
rect(100, 730, 270, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(930, 300, 100, 100);//taille et position du cercle vide dont le contour est rouge
}
if (mouseX>350) {//si le curseur de la souris à l'horizontal est supérieur à 350
if (mouseX<420) {//et si le curseur de la souris à l'horizontal est inférieur à 420
if (mouseY>110) {//et si le curseur de la souris à la vertical est supérieur à 110
if (mouseY<180) {//et si le curseur de la souris à la vertical est inférieur à 180
if (mousePressed) {//et si la souris est enfoncée
rideau2=false;//alors le boolean rideau2 est faux
}
}
}
}
}
if (rideau2==false) {//si le boolean rideau2 est faux
fill(0);
noStroke();
rect(950, 735, 150, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(390, 150, 80, 80);//taille et position du cercle vide dont le contour est rouge
}
if (mouseX>670) {//si le curseur de la souris à l'horizontal est supérieur à 670
if (mouseX<760) {//et si le curseur de la souris à l'horizontal est inférieur à 760
if (mouseY>90) {//et si le curseur de la souris à la vertical est supérieur à 90
if (mouseY<250) {//et si le curseur de la souris à la vertical est inférieur à 250
if (mousePressed) {//et si la souris est enfoncée
rideau1=false;//alors le boolean rideau1 est faux
}
}
}
}
}
if (rideau1==false) {//si le boolean rideau2 est faux
fill(0);
noStroke();
rect(750, 735, 150, 60);//taille et position du rectangle noir et sans contour
noFill();
stroke(#FF081C);
ellipse(730, 180, 80, 160);//taille et position du cercle vide dont le contour est rouge
}
if (rideau1==false) {//si le boolean rideau1 est faux
if (rideau2==false) {//et si le boolean rideau2 est faux
if (telephone==false) {//et si le boolean telephone est faux
if (horloge==false) {//et si le boolean horloge est faux
if (veste==false) {//et si le boolean veste est faux
if (lampe==false) {//et si le boolean lampe est faux
if (tiroirs==false) {//et si le boolean tiroirs est faux
if (affiche==false) {//et si le boolean affiche est faux
if (tasse==false) {//et si le boolean tasse est faux
fill(255); //remplissage
textSize(36);//taille du texte
text("Bravo! Vous avez récupéré tous les objets.", 250, 755); //texte et position du texte
if (mousePressed) {
clic2=false;
clic3=true; //Après avoir trouver tous les objets et si on clique n'importe où sur la fenêtre, on passe au dernier jeu grâce à clic3.
}
}
}
}
}
}
}
}
}
}
}
}
void labBouger() {
if (keyPressed) {
if (key == CODED) {
if (keyCode == UP) {
if (red(get(a, c-1))==0) {
c=c;
} else {
c = c-2; //Cette suite de condition détermine que, si la flèche du haut est enfoncée, l'ordonnée c diminue, mais uniquement si un sous-pixel rouge
//est présent dans le pixel suivant, et donc, l'image monte.
}
}
}
}
if (keyPressed) {
if (key == CODED) {
if (keyCode == LEFT) {
if (red(get(a-1, c))==0) {
a=a;
} else {
a = a-2; //Cette suite de condition détermine que, si la flèche de gauche est enfoncée, l'abscisse diminue, mais uniquement si un sous-pixel rouge est
// présent dans le pixel suivant, et donc, l'image se déplace vers la gauche.
}
}
}
}
if (keyPressed) {
if (key == CODED) {
if (keyCode == RIGHT) {
if (red(get(a+17, c))==0) {
a=a;
} else {
a = a+2; //Cette suite de condition détermine que, si la flèche de droite est enfoncée, l'abscisse augmente, mais uniquement si un sous-pixel rouge est
// présent dans le pixel suivant, et donc, l'image se déplace vers la droite.
}
}
}
}
if (keyPressed) {
if (key == CODED) {
if (keyCode == DOWN) {
if (red(get(a, c+17))==0) {
c=c;
} else {
c = c+2; //Cette suite de condition détermine que, si la flèche du bas est enfoncée, l'ordonnée augmente, mais uniquement si un sous-pixel rouge est
// présent dans le pixel suivant, et donc, l'image descend.
}
}
}
}
}
void sortie(){
if (a>1180 && c>860) {
fill(0);
rect(0, 400, 1200, 100);
fill(255);
text("Vous vous êtes échappée du labyrinthe!", 380, 455);
if (mousePressed) {
if (mouseX>0) {
if (mouseX<1200) {
if (mouseY>400) {
if (mouseY<500) {
clic2 = true;
}
}
}
}
}
}
if (mousePressed) {
if (mouseX>0) {
if (mouseX<1200) {
if (mouseY>0) {
if (mouseY<50) {
clic2=true; //Lorsque l'abscisse et l'ordonnée dépasse une certaine valeur, position située à la fin du labyrinthe, une bande noir ainsi que le message
// de victoire apparaît. Cliquez à nouveau sur le message pour activer clic2.
}
}
}
}
}
}
void documents(){
if (a>1150 && c<40) {
documents = 1;
}
if (a>490 && a<520 && c>470 && c<500){
documents = 2;
}
if (a>960 && a<990 && c>710 && c<740){
documents = 3;
} //Lorsque l'abscisse et l'ordonnée de l'image arrive dans un certain cadre de valeur, alors on « récupère » un document.
}