Bonjour,

Je suis en ISN (Informatique et Sciences du Numériques) et j'apprends à coder en java avec l'environnement processing.
Actuellement, nous codons le jeu du memory et je suis bloqué pour afficher le nombre de coups joués. J'ai déja inséré les codes et la bibliothèque ControlP5 pour afficher le texte mais rien ne s'affiche. Pouvez-vous me dire ce qui cloche ? Merci par avance

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 -------------------------------------------------------------