Ajouter un commentaire

Niroken

Hello Olihya,

Pour le reset c'est relativement simple, tu ajoutes une méthode privée à ta fenetre :

private void resetReverso() {
    for (int i = 0; i < b.length; i++) {
        b[i].setSelected(false);
    }
}

Ensuite, tu dois appeller cette méthode si tu cliques sur le boutton "raz" ou si tu changes de niveau en cours de jeu.

Ca donne ca :

public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
      Object source = e.getSource(); 
      if (source instanceof JMenuItem) { 
         if (source == raz) { 
        	// APPEL DE  LA METHODE RESET 
               resetReverso();
         } 
      } 
      if (source instanceof JMenuItem) { 
    	  // APPEL DE  LA METHODE RESET 
             resetReverso();
    	  if (source == niveau1) { 
            selectedNiveau = "niveau1"; 
            JOptionPane 
                  .showMessageDialog( 
                        niveau1, 
                        "<html>NIVEAU 1<br>VOUS DEVEZ RETOURNER TOUT LES PIONS.<br>SACHANT QUE LORSQUE VOUS CLIQUEZ SUR UN PION, <BR>LES PIONS AU DESSUS, EN DESSOUS ET SUR LES CÔTES SE RETOURNENT AUSSI.</html>"); 

         }// etc etc 

Ca c'était la bonne nouvelle, la mauvaise, c'est qu'effectivemen si tu veux faire pivoter ta grille dans n'importe quel sens, il aurait mieux valu modéliser ca avec un tableau en 2D, la c'est possible, mais ca va etre sacrément casse c.....

Ensuite si je puis me permettre, il y a beaucoup de redondances de code dans ta méthode actionPerformed, par exemple :

if ((b[0].isSelected()) && (b[1].isSelected()) 

         && (b[2].isSelected()) && (b[3].isSelected()) 

         && (b[4].isSelected()) && (b[5].isSelected()) 

         && (b[6].isSelected()) && (b[7].isSelected()) 

         && (b[8].isSelected()) && (b[9].isSelected()) 

         && (b[10].isSelected()) && (b[11].isSelected()) 

         && (b[12].isSelected()) && (b[13].isSelected()) 

         && (b[14].isSelected()) && (b[15].isSelected()) 

         && (b[16].isSelected()) && (b[17].isSelected()) 

         && (b[18].isSelected()) && (b[19].isSelected()) 

         && (b[20].isSelected()) && (b[21].isSelected()) 

         && (b[22].isSelected()) && (b[23].isSelected()) 

         && (b[24].isSelected())) { 

            JOptionPane 
                  .showMessageDialog(niveau4, 
                        "<html>BRAVO, C'EST GAGNE!!!<br>REVERSO N'A PLUS DE SECRET POUR VOUS.</html>"); 
         } 

Tu imagines si ton tableau avait été de taille 10 000 :D ?
Si tu déclares une méthode qui vérifies si tous les pions de la grille sont séléctionnés par exemple :

private boolean isAllGridSelected() {
	   boolean vResult = true;
	   
	   for (int i = 0; i < b.length; i++) {
		   vResult = vResult && b[i].isSelected();
	   }
	   
	   return vResult;
   }

Du coup pour chaque niveau tu n'aurais plus qu a faire :

if (isAllGridSelected()) {
     JOptionPane 
                  .showMessageDialog(niveau4, 
                        "<html>BRAVO, C'EST GAGNE!!!<br>REVERSO N'A PLUS DE SECRET POUR VOUS.</html>"); 
}

C'est tt de même plus léger.

Il y a d'autres optimisations c'est sur mais on attendra de voir ce que tu décides pour le tableau à 2D ou pas :)

Bonne chance,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 EEEE  K  K  X   X  Y   Y  PPPP  
E K K X X Y Y P P
EEE KK X Y PPPP
E K K X X Y P
EEEE K K X X Y P