1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
| //--------------------------------------- Déclarations -------------------------------------
int l = 100; // Longueur du coté du carré (100 pixels)
int x = -100; // Abscisse du coin supérieur gauche du premier carré
int y = 20; // Ordonnée du coin supérieur gauche du premier carré
int tab1 [][] = new int[4][4]; // On déclare un tableau 2 entrées 4*4
int tab2 [] = {
0, 0, 0, 0, 0, 0, 0, 0
}; // On déclare le tableau 2 et on l'initialise
PImage img1 ; // Variable pour charger et afficher l'image1
PImage img2 ; // Variable pour charger une partie de l'image1
int abs = 0 ; // Variable pour l'abscisse du coin de la partie de l'image
int ord = 0 ; // Variable pour l'ordonnée du coin de la partie de l'image
int r = 0; // Variable random
int clic = 0; // Variable nombre de clics
int i1 = -1; // Abscisse 1er carré
int i2 = -1; // Ordonné 1er carré
int j1 = -1; // Abscisse 2nd carré
int j2 = -1; // Ordonné 2nd carré
int n1 = -1; // Numéro première image
int n2 = -1; // Numéro 2ème image
import controlP5.*; // On importe la bibliothèque ControlP5
ControlP5 cp5; // On déclare l'objet cp5
Textarea zoneTexte; // On déclare la zone d'affichage nommée zoneTexte
int nbCoup = 0; // On déclare la variable pour afficher le nombre de coups joués
//-------------------------------------- Fonction Setup ()---------------------------------
void setup()
{
background (255, 255, 255); // Couleur du fond de la fenêtre principale : blanc
size (500, 620); // Taille de la fenêtre principale : 500 pixels de largueur et 620 pixels de hauteur
fill (0, 0, 255); // Couleur des carrés : bleu
for (int i = 0; i < 4; i++) // Boucle "for" pour les abscisses (tracer les carrés)
{
x = x+120 ; // On décale le x de 120 pixels sur le côté droit
y = 20; // L'abscisse est à 20 pixels
for (int d = 0; d < 4; d++) // Boucle "for" pour les ordonnées (tracer les carrés)
{
rect (x, y, l, l); // On trace le carré
y = 120 + y; // On décale l'ordonnée de 120 pixels vers le bas
int r = int(random(8)); // On calcule un entier au hasard entre 0 et 7.
while (tab2[r]==2) // Boucle "tant que" r un nombre déja rentré
{
r = int(random(8)); // On recalcule un nouvel entier au hasard entre 0 et 7.
}
tab1[i][d]=r; // On rentre le nombre r
tab2[r]++; // On indique dans le tab2 que r est maintenant rentré
}
}
cp5 = new ControlP5 (this); // On crée l'objet cp5
zoneTexte = cp5.addTextarea ("zone")
.setPosition(500, 55) // Coordonnées du coin supérieur gauche
.setSize(100, 100) // Largeur et hauteur de la zone d'affichage
.setFont(createFont("arial", 26)) // Police et taille de la police
.setLineHeight(30) // Hauteur de chaque ligne de la zone d'affichage
.setColor(color(255)) // Couleur de zone de la police
.setColorBackground(color(0)) // Couleur du fond de la zone d'affichage
.setColorForeground(color(0)) // Couleur du premier plan
;
}
//------------------------------------------------ FONCTION DRAW () ------------------------
void draw ()
{
if (clic == 2) // Si le nombre de clics est égale à 2
{
if (n1 != n2) // Si les deux images sont différentes
{
delay (2000); // Attendre 2 secondes avant de continuer
fill (0, 0, 255); // Couleur des carrés : bleu
rect (20+i1*120, 20+j1*120, l, l); // On redessine le premier carré
rect (20+i2*120, 20+j2*120, l, l); // On redessine le second carré
} else // Sinon
{
delay (2000); // Attendre 2 secondes avant de continuer
fill (255, 255, 255); // Couleur des carrés : blanc
rect (20+i1*120, 20+j1*120, l, l); // On redessine le premier carré
rect (20+i2*120, 20+j2*120, l, l); // On redessine le second carré
tab1[i1][j1]= -1; //On rentre -1 dans le tab1 en coordonnées i1, j1
tab1[i2][j2]= -1; //On rentre -1 dans le tab1 en coordonnées i2, j2
}
clic = 0; // On redéfinie le nombre de clics a 0
cp5 = new ControlP5 (this); // On recrée l'objet cp5
zoneTexte = cp5.addTextarea ("zone")
.setPosition(500, 55) // Coordonnées du coin supérieur gauche
.setSize(100, 100) // Largeur et hauteur de la zone d'affichage
.setFont(createFont("arial", 26)) // Police et taille de la police
.setLineHeight(30) // Hauteur de chaque ligne de la zone d'affichage
.setColor(color(255)) // Couleur de zone de la police
.setColorBackground(color(0)) // Couleur du fond de la zone d'affichage
.setColorForeground(color(0)) // Couleur du premier plan
;
}
}
//------------------------------------------------- FONCTION MOUSEPRESSED () ---------------
void mousePressed ( ) // Fonction qui s'exécute quand on clique sur le carré
{
for (int i = 0; i < 4; i++) // Boucle "for" pour les abscisses
{
for (int d = 0; d < 4; d++) // Boucle "for" pour les ordonnées
{
if (mouseX>20+i*120 && mouseX<120+i*120 && mouseY>20+d*120 && mouseY<120*d+120 && clic!=2) // Si on clique à l'intérieur du carré
{
if (tab1[i][d]!=-1)
{
abs = (tab1 [i][d])*100; // On prend la valeur de la matrice correspondante au carré selectionné, puis on la multiplie par 100
img1 = loadImage( "Image1.png" ); // On charge l'image : Image1.png
img2 = img1.get(abs, ord, 100, 100) ; // On charge une partie de l'image de taile 100*100
// issue du coin des coordonnés (abs;0)
image ( img2, 20+i*120, 20+d*120 ) ; // On affiche le morceau d'image
if (clic==0) // Si on a cliqué 1 fois
{
i1 = i;
j1 = d;
n1 = tab1[i][d];
} else // Sinon
{
i2 = i;
j2 = d;
n2 = tab1[i][d];
if (i1==i2 && j1==j2) // On regarde si les 2 cases sont égales
{
clic--; // Si oui, on diminue le nombre de clic 1
}
}
clic++; // On incrémente le nombre de clics
int nbCoups = 12;
String message = "Nombre de coups joués : " + "\n" + str(nbCoups); //On définit le message comme "Nombre de coups joués :" et la variable
zoneTexte.setText(message); // On affiche le message
}
}
}
}
}
//----------------------------------------------------------------- FIN ------------------------------------------------------------- |
Partager