elvis36
Messages postés
34
Date d'inscription
mercredi 8 novembre 2006
Statut
Membre
Dernière intervention
8 juillet 2010
31 mai 2009 à 10:39
Bonjour DarkSidious,
En fait voila mon code, un peu long mais pas trop complexe.
En fait ce code est générer lorsque l'utilisateur appui sur un bouton. Dans un premier temps le programme demande le nom du joueur puis il réalise un premier essai qui est validé ou non en comparant cet essai avec la réponse 648...
Ensuite une boucle while tant que 648 n'est pas trouvé permet de répéter ce code par le biais d'un showConfirmDialog... Lorsque l'utilisateur clique sur Oui la boucle while s'exécute à nouveau, si il clique sur Annuler ou close le programme se ferme.
Le problème est si il clique sur non, je souhaite fermer le showConfirmDialogue ( setUndecorated(true); en vert dans le programme) et je souhaite rendre mon bouton Sol inactif par le biais du setEnabled(false);
Si je supprime le while le setEnabled fonctionne mais je ne peux plus utiliser le showConfirmDialogue pour demander à l'utilisateur de jouer à nouveau.
Voila c'est un peu long et cette subtilité semble pas évidente à résoudre...
Merci à toi...
Sol.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String NomJoueur = JOptionPane.showInputDialog(null,"Quelle est le nom du joueur pour cette partie ? "
,"Nom du joueur",JOptionPane.QUESTION_MESSAGE);
if(NomJoueur==null){
JOptionPane.showMessageDialog(null,"Partie Annuler... Le programme va être fermé",
"Résultat", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
int i=0;
nbEssais++;
String nb1 = JOptionPane.showInputDialog(null,"Quelle valeur proposez-vous pour \n la somme des chiffres de factorielle 100 ? " +
"\n \n Essai numéro : "+nbEssais,
"Solution????",JOptionPane.QUESTION_MESSAGE);
System.out.println(nb1);
if(nb1!=null){
try{i = Integer.parseInt(nb1);}
catch(NumberFormatException E){JOptionPane.showMessageDialog(null,"Erreur(s) de saisie(s)... \n \n " +
"La valeur saisie est supérieur \n à 2 exposant 31 ou est une chaîne de caractères...", "Résultat", JOptionPane.INFORMATION_MESSAGE);}
}
else{JOptionPane.showMessageDialog(null,"Partie Annuler... Le programme va être fermé",
"Résultat", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
if(i<0){JOptionPane.showMessageDialog(null,"Erreur(s) de saisie(s)... \n La somme d'entiers positifs est une valeur positive...",
"Résultat", JOptionPane.INFORMATION_MESSAGE);}
else{
if(i==648){int choix = JOptionPane.showConfirmDialog(null,"GAGNE ! \n Vous avez effectué "+nbEssais+" essais." +
"\n Score incris dans les meilleurs scores... " +
"\n \n Voulez vous visualiser l'algorithme ayant permis la résolution de ce problème??" +
"\n \n Si vous cliquez sur NON le programme va être fermé automatiquement car la réponse a été trouvée!!!" +
"\n Si vous cliquez sur OUI la solution va s'afficher...",
"Résultat",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
System.out.println("Gagné");
DateFormat HeureFin = new SimpleDateFormat("HH:mm:ss");
System.out.println(""+HeureFin.format(new Date()));
SimpleDateFormat hourParser=null;
Date heureS=null, heureF=null, heureDuree=null;
try {
hourParser = new SimpleDateFormat("HH:mm:ss");
heureF=hourParser.parse(HeureFin.format(new Date()));
heureS=hourParser.parse(HSFomatNewdate);
heureDuree=new Date(heureF.getTime()-heureS.getTime()-3600000);
System.out.println(hourParser.format(heureDuree));
}
catch(java.text.ParseException ee){
System.out.println("Impossible de formater la date");
System.err.println("Erreur(s) : "+ee);
}
String Scores1 = "Nom du joueur : "+NomJoueur+". Problème résolu en "+nbEssais+" essais et en " +
hourParser.format(heureDuree)+" (Heure(s):Minute(s):Seconde(s)).";
Lireetecrire lee = new Lireetecrire();
lee.ecrire(Scores1);
if(choix==0)
{JFrame RG = new ResultatGagne();}
else
System.exit(0);
}
else {JOptionPane.showMessageDialog(null,"PERDU !",
"Résultat", JOptionPane.INFORMATION_MESSAGE);
System.out.println("Perdu");}
}//fin else i<0
while (!(i==648)){
int Rees = JOptionPane.showConfirmDialog(null,"Voulez-vous effectuer un nouvel essai?",
"Résultat",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);
if (Rees == JOptionPane.YES_OPTION) {
nbEssais++;
String nb = JOptionPane.showInputDialog(null,"Quelle valeur proposez-vous pour \n la somme des chiffres de factorielle 100 ? " +
"\n \n Essai numéro : "+nbEssais,
"Solution????",JOptionPane.QUESTION_MESSAGE);
System.out.println(nb);
if(nb!=null){
try{i = Integer.parseInt(nb);}
catch(NumberFormatException E){JOptionPane.showMessageDialog(null,"Erreur(s) de saisie(s)... \n \n " +
"La valeur saisie est supérieur \n à 2 exposant 31 ou est une chaîne de caractères...", "Résultat", JOptionPane.INFORMATION_MESSAGE);}
}
else{JOptionPane.showMessageDialog(null,"Partie Annuler... Le programme va être fermé",
"Résultat", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
if(i<0){JOptionPane.showMessageDialog(null,"Erreur(s) de saisie(s)... \n La somme d'entiers positifs est une valeur positive...",
"Résultat", JOptionPane.INFORMATION_MESSAGE);}
else{
if(i==648){int choix = JOptionPane.showConfirmDialog(null,"GAGNE ! \n Vous avez effectué "+nbEssais+" essais." +
"\n Score incris dans les meilleurs scores... " +
"\n \n Voulez vous visualiser l'algorithme ayant permis la résolution de ce problème??" +
"\n \n Si vous cliquez sur NON le programme va être fermé automatiquement car la réponse a été trouvée!!!" +
"\n Si vous cliquez sur OUI la solution va s'afficher...",
"Résultat",JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE);
System.out.println("Gagné");
DateFormat HeureFin = new SimpleDateFormat("HH:mm:ss");
System.out.println(""+HeureFin.format(new Date()));
SimpleDateFormat hourParser=null;
Date heureS=null, heureF=null, heureDuree=null;
try {
hourParser = new SimpleDateFormat("HH:mm:ss");
heureF=hourParser.parse(HeureFin.format(new Date()));
heureS=hourParser.parse(HSFomatNewdate);
heureDuree=new Date(heureF.getTime()-heureS.getTime()-3600000);
System.out.println(hourParser.format(heureDuree));
}
catch(java.text.ParseException ee){
System.out.println("Impossible de formater la date");
System.err.println("Erreur(s) : "+ee);
}
String Scores2 = "Nom du joueur : "+NomJoueur+". Problème résolu en "+nbEssais+" essais et en " +
hourParser.format(heureDuree)+" (Heure(s):Minute(s):Seconde(s)).";
Lireetecrire lee = new Lireetecrire();
lee.ecrire(Scores2);
if(choix==0)
{JFrame RG = new ResultatGagne();}
else
System.exit(0);
}
else {JOptionPane.showMessageDialog(null,"PERDU !",
"Résultat", JOptionPane.INFORMATION_MESSAGE);
System.out.println("Perdu");}
}//fin else i<0
}// fin then YES_OPTION
else
if (Rees == JOptionPane.NO_OPTION) {
setUndecorated(true);
Sol.setEnabled(false);
System.out.println("remove");
}//fin then NO_OPTION
else
if((Rees==JOptionPane.CANCEL_OPTION)||(Rees==JOptionPane.CLOSED_OPTION)){JOptionPane.showMessageDialog(null,"Partie Annulée... Le programme va être fermé",
"Résultat", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);}//fin else
}//fin while
}//fin actionPerformed
});