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
Hello Olihya,
Pour le reset c'est relativement simple, tu ajoutes une méthode privée à ta fenetre :
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 :
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 :
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 :
Du coup pour chaque niveau tu n'aurais plus qu a faire :
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