Boutton recommncer

Fermé
Deadpool74 Messages postés 1 Date d'inscription vendredi 27 octobre 2017 Statut Membre Dernière intervention 27 octobre 2017 - Modifié le 27 oct. 2017 à 13:54
Bonjour tout le monde! Je suis un élève de Terminale S et dans mon option ISN, je dois programmer un jeu de memory. L'étape qui me coince consiste à créer un boutton "recommencer". En ce moment, quand je sélectionne deux cases bleues (la couleur des cases avant de cliquer sur une de ces dernières) affichant la même image, ces cases deviennent vertes (couleur qui montre qu'une paire d'images à été trouvée). Après avoir appuyé sur le bouton recommencer, les images ne se réorganisent pas au hazard et quand je clique sur une image d'une paire trouvée avant d'avoir recommencé la partie, l'image de cette case ne s'affiche plus. J'espère avoir été assez clair, voici mon programme:
//---------------------------------------------------- DECLARATIONS ---------------------------------------------------------
int c = 100 ;    // Côté des carrés
PImage img1 ; // Variable pour charger et afficher l'image1
PImage img2 ; // Variable pour charger une partie de l'image1
int tab1 [ ] [ ] = new int [ 4 ] [ 4 ] ; //déclaration d'u tableau 4*4
int tab2 [ ] = {
  0, 0, 0, 0, 0, 0, 0, 0
};//on fait en sorte que le tab2 nousq permet de savoir quand une valeur à été rentré 2 fois
int nbClic = 0;
int nbCoups = 0;
;
int i1 = -1;
int i2 = -1;
int j1 = -1;
int j2 = -1;
int n1 = -1;
int n2 = -1;
import  controlP5.* ;    // On importe la bibliothèque controlP5
ControlP5  cp5 ;// On déclare l'objet cp5
Textarea zoneTexte;
Button recommencer; //On déclare le boutton "recommencer"
//-------------------------------------------------- FONCTION SETUP () -----------------------------------------------------
void  setup ( )
{
  background ( 0, 255, 0 ) ;    // Couleur de fond de la fenêtre principale en RVB, ici bleu
  size ( 500, 600 ) ;    // Taille de la fenêtre principale
  fill ( 0, 0, 255 ) ;    // Couleur des carrés ici bleus
  img1 = loadImage ( "Image1.png" ) ; // On charge l'image : Image1.png
  println ( tab1 [ 0 ] ) ; // affiche le premier élément du tableau, c'est a dire 1
  println ( tab2 [ 6 ] ) ; // affiche le sixième élément du tableau, c'est a dire 6
  cp5  =  new  ControlP5 ( this ) ;    // Création de l'objet cp5
  zoneTexte  =  cp5.addTextarea ( "coups" ) 
    .setPosition ( 10, 500 )    // Abscisse et ordonnée du coin supérieur gauche du bouton
    .setSize ( 300, 50 )    // Largeur et hauteur du bouton
    .setFont (createFont("arial", 28))
    .setLineHeight(30)
    .setColor(color(0))
    .setColorBackground ( color ( 0, 0, 200 ) )
    .setColorForeground ( color ( 0, 0, 200 ) ) // Couleur du bouton en RGB
    ;
  String message = "Nombre de coups:" + nbCoups;
  zoneTexte.setText(message);
  recommencer  =  cp5.addButton ( "recommencer" )    // "clic" est le nom de la FONCTION appelée lors du clic sur
    // le bouton
    .setPosition ( 320, 500 )    // Abscisse et ordonnée du coin supérieur gauche du bouton
    .setSize ( 150, 50 )    // Largeur et hauteur du bouton
    .setColorBackground ( color ( 255, 0, 0 ) )    // Couleur du bouton en RGB
    ;
  for ( int  i = 0; i < 4; i++ ) // Boucle For pour les abcsisses des carrés
    for (int j = 0; j < 4; j++ )    // Boucle For pour les ordonnées des carrés
    {
      int n = int ( random ( 8 ) ) ; // On calcule un entier au hasard entre 0 et 7
      while ( tab2 [ n ] > 1 ) // Boucle tant que n est un nombre déjà rentré 1 seule fois
      {
        n = int ( random ( 8 ) ) ; // On recalcule un nouvel entier n au hazard compris entre 0 et 7
      }
      tab1 [ i ] [ j ] = n ; // On rentre le nombre n
      tab2 [ n ] ++ ; // On indique dans le tab2 que n est maintenant rentré
      rect ( 20 + 120 * i, 20 + 120*j, c, c ) ;    // On trace un carré
    }
}
//------------------------------------------------ FONCTION DRAW () --------------------------------------------------------
void  draw ( )    // Cette fonction même vide doit être présente
{
  if (nbClic ==2) //Quand le nombre de clics = 2
  {
    if ( i1 == i2 && j1 == j2) //On cherche ici à empêcher l'utilisateur d'associer une case à elle-même.
    {
      fill(0, 0, 255); //On dessine le carré en bleu
      rect ( 20 + 120 * i1, 20 + 120*j1, c, c ) ; //On défini les variables
      rect ( 20 + 120 * i2, 20 + 120*j2, c, c ) ;
      nbClic = 0;
      println("Choissisez une autre case!");
    } else
    {
      if (n1==n2) // quand deux images sont semblables
      {
        fill(0, 255, 0); //On dessine le carré en vert
        rect ( 20 + 120 * i1, 20 + 120*j1, c, c ) ;
        rect ( 20 + 120 * i2, 20 + 120*j2, c, c ) ;
        tab1 [i1][j1] = -1; //On défini les variables
        tab1 [i2][j2] = -1;
        nbClic = 0;
      } else
      {
        fill(0, 0, 255); //On dessine le carré en bleu
        rect ( 20 + 120 * i1, 20 + 120*j1, c, c ) ; //On défini les variables
        rect ( 20 + 120 * i2, 20 + 120*j2, c, c ) ;
        nbClic = 0;
      }
    };
    delay(1000); //on introduit un délai de 1 seconde.
  }
}
//------------------------------------------------- FONCTION MOUSEPRESSED () ---------------------------------------
void  mousePressed ( )    // Fonction qui s'exécute quand on clique sur une des carrés
{
  if (nbClic<2)
  {
    for ( int  i = 0; i < 4; i++ )  //Boucle For pour les abscisses des carrés
    {
      for (int j = 0; j < 4; j++ )  // Boucle For pour les ordonnées des carrés
      {
        // Si on clique sur un des carrés
        if ( mouseX > 20+i*120  &&  mouseX < 120+i*120  &&  mouseY > 20+j*120  &&  mouseY < 120+j*120   )
        {
          if (nbClic == 0) //pour 1 clic
          {
            i1= i; //On défini i1 et j1
            j1= j;
            n1 = tab1 [i][j]+1;
          }
          img2 = img1.get (tab1[i][j]*100, 0, 100, 100); //On veut faire apparaître
          image ( img2, 20+120*i, 20+120*j);         
          { 
            if (nbClic == 1) //pour 2 clics
            {
              i2= i;  //On défini i2 et j2
              j2= j;
              n2 = tab1 [i][j]+1;
              nbCoups = nbCoups + 1; //On ajoute un nouveau coup pour tous les 2 clics.
            }
            img2 = img1.get (tab1[i][j]*100, 0, 100, 100);
            image ( img2, 20+120*i, 20+120*j);
          }
          nbClic ++; //On incrémente le nombre de clics
          String message = "Nombre de coups:" + nbCoups; //On affiche le
          zoneTexte.setText(message);                    //nombre de coups.
        }
      }
    }
  }
}
//----------------------------------------------------------------- FONCTION RECOMMENCER () ---------------------------------------------------------------
void recommencer ()
{
  nbClic = 0;
  nbCoups = 0;
  img1 = loadImage ( "Image1.png" ) ; // On charge l'image : Image1.png
  String message = "Nombre de coups:" + nbCoups; //On affiche le
  zoneTexte.setText(message);
  fill(0, 0, 255); //On dessine le carré en bleu
  rect ( 20 + 120 * i1, 20 + 120*j1, c, c ) ; //On défini les variables
  rect ( 20 + 120 * i2, 20 + 120*j2, c, c ) ;
  i1 = -1;
  i2 = -1;
  j1 = -1;
  j2 = -1;
  n1 = -1;
  n2 = -1;
  int tab1 [ ] [ ] = new int [ 4 ] [ 4 ] ; //déclaration d'u tableau 4*4
int tab2 [ ] = {
  0, 0, 0, 0, 0, 0, 0, 0
};//on fait en sorte que le tab2 nousq permet de savoir quand une valeur à été rentré 2 fois
 for ( int  i = 0; i < 4; i++ ) // Boucle For pour les abcsisses des carrés
    for (int j = 0; j < 4; j++ )    // Boucle For pour les ordonnées des carrés
    {
      int n = int ( random ( 8 ) ) ; // On calcule un entier au hasard entre 0 et 7
      while ( tab2 [ n ] > 1 ) // Boucle tant que n est un nombre déjà rentré 1 seule fois
      {
        n = int ( random ( 8 ) ) ; // On recalcule un nouvel entier n au hazard compris entre 0 et 7
      }
      tab1 [ i ] [ j ] = n ; // On rentre le nombre n
      tab2 [ n ] ++ ; // On indique dans le tab2 que n est maintenant rentré
      rect ( 20 + 120 * i, 20 + 120*j, c, c ) ;    // On trace un carré
    }
}
//----------------------------------------------------------------- FIN ---------------------------------------------------------------


Merci d'avance de votre temps,

JP.Christophe