Problème : éviter l'exécution prématurée de certaines l
Miklp
Messages postés3Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention14 avril 2003
-
13 avril 2003 à 22:39
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 2004
-
14 avril 2003 à 15:27
Bonjour,
Je veux programmer un puissance 4 en Java (nom de la class : Jeu), où l'on peut choisir le nombre de lignes et le nombre de colonnes pour le tableau, mais mon problème s'étend à d'autres types de programmes, pas seulement à un puissance 4.
Pour que l'utilisateur choisisse ces 2 paramètres je crée une classe Options qui contient en attributs nbRow et nbCol (des entiers), des cases de texte, un bouton Ok et dont le constructeur crée une fenêtre d'options (on a donc class Options extends JFrame implements ActionListener).
La class Jeu a pour attribut (entre autres) Options opts;
Voici ce qui se passe quand on clique sur le bouton Ok d'une fenêtre Options :
public Jeu() {
opts = new Options();
matJeu = new byte[options.nbRow][options.nbCol]; // MatJeu est un attribut de Jeu contenant la matrice de la partie en cours
nbCoups = 0;
}
Ce qui veut dire que une fois que la personne a cliqué sur Ok, il faudrait créer la matrice matJeu avec les paramètres de la classe Options.
Mais le problème est que les lignes d'après (matJeu = new byte[options.nbRow][ ......) s'exécutent tout de suite, sans que l'utilisateur n'ait encore cliqué sur Ok. D'où des erreurs dues au fait que opts.nbRow et opts.nbCol n'existent pas encore (ne sont pas initialisées).
Comment remédier à ce problème ? Comment attendre que la personne ait cliqué sur le bouton Ok pour exécuter la suite du constructeur de Jeu ?
Miklp
Messages postés3Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention14 avril 2003 14 avril 2003 à 10:48
Merci de cette réponse. Je préfererais opter pour la solution 1, mais le problème à cette solution (qui serait donc de mettre matJeu = new byte[options.nbRow][options.nbCol]; dans la classe Options, dans le ActionPerformed) est que matJeu est un attribut de la classe Jeu, et non de la classe Options...
Mais je vais essayer de m'en sortir de cette manière, quite à changer les attributs de classe.
Merci encore,
Miklp
Messages postés3Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention14 avril 2003 14 avril 2003 à 10:56
Pour être plus clair dans l'explication de mon problème, je voudrais en quelque sorte reprogrammer une sorte d'InputDialog améliorée. En effet les InputDialog arrêtent le programme (les lignes d'après ne s'exécutent pas) tant que l'utilisateur n'a pas cliqué sur Ok.