Deadpool74
Messages postés1Date d'inscriptionvendredi 27 octobre 2017StatutMembreDernière intervention27 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 ---------------------------------------------------------------