BOnjour,

Je suis en train de créer un interface d un jeu MasterMind dans le cadre d un exercice.

Le problème que je rencontre est:
Lorsque je clique sur le bouton "définir le nombre de tentatives" (en interface graphique), je veux qu'il modifie la valeur de la variable nbTentatives de la classe Jeu.

Cependant dans ma classe FenetrePrincipale , je ne peux accéder à la méthode setTNbentatives de ma classe Jeu
A savoir que ma classe FenetrePrincipale hérite de JFrame et donc je ne peux hériter à nouveau de ma classe Jeu

Comment je peux faire pour accéder à la méthode setNbJeu de ma classe Jeu depuis ma classe FenetrePrincipale?

Merci d'avance pour votre aide.

VOici le fichier avec mes deux classes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
// j importe les biblio
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

//classe mère où les variables de bases sont définies. Elles seront rappelées par la suite
public class Jeu {
	//on déclare les variables suivantes qu'on aura besoin pour le jeu
	protected int nbPions;
	protected int nbCouleurs;
	protected int nbTentatives;
	
	//on déclare un constructeur par défaut en initialisant les variables.
	public Jeu(){ setJeu(4,5,5); }
	// on déclare un constructeur dans le cas où les variables sont proposées
	public Jeu( int a, int b, int c) { setJeu (a,b,c);}
	// on déclare la méthode qui va initialiser toutes ces variables pour ce jeu (surcharge)
	public void setJeu(int a, int b, int c){
		
		nbPions=a;
		nbCouleurs=b;
		nbTentatives=c;
		
	}
	//on définit une méthode qui va initialiser la variable nbPions
	public void setNbPions(int a){ nbPions=a;}
	//on définit une méthode qui va initialiser la variable nbCouleurs
	public void setNbCouleurs(int a){ nbCouleurs=a;}
	//on définit une méthode qui va initialiser la variable nbTentatives
	public void setNbTentatives(int a){ nbTentatives=a;}
	//on définit une méthode qui retourne les variables demandées
	public int getnbPions(){return nbPions;}
	public int getnbCouleurs(){return nbCouleurs;}
	public int getnbTentatives(){return nbTentatives;}
	// on surcharge le TOstring
	public String toString() { return "la classe est définie par nb de pions="+nbPions+" nb de couleurs="+nbCouleurs+" nb de tentatives="+nbTentatives;}
	
}

//classe s occupant de la construction de la fenetre principale
class FenetrePrincipale extends JFrame implements ActionListener{
	//je crée la barre de menu
	protected JMenuBar barreMenus;
	//je crée les  menus
	protected JMenu fichier, options, jeux, aide;
	// je crée les sous menus	
	protected JMenuItem nouveauJeu, ferme, definirTentatives, definirCouleurs, definirPions, definirCombinaison, about;
	
	//constructeur par défaut
	public FenetrePrincipale(){ 
		// permettre la fermeture du programme sur la croix rouge 
		addWindowListener(new WindowAdapter()
				{ public void windowClosing (WindowEvent e)
					{ System.exit(0);
					}
				});
		setFenetre(); 
	}

	//paramétrage de la fenetre
	public void setFenetre(){
		///je definis le titre
		setTitle ("MasterMind");
		//je definis la taille de la fenetre
		setSize(800,600);
		//creations de la barre de menus
		barreMenus = new JMenuBar();
		setJMenuBar(barreMenus);
		//creations du  menu fichier et de ses sous menus
		fichier = new JMenu("Fichier");
		barreMenus.add(fichier);
		
		nouveauJeu = new JMenuItem("Nouveau Jeu");
		fichier.add(nouveauJeu);
		nouveauJeu.addActionListener(this);

		ferme = new JMenuItem("Quitter");
		fichier.add(ferme);
		ferme.addActionListener(this);

		//creations du menu  options et ses sous menus
		options = new JMenu("Options");
		barreMenus.add(options);
		
		definirTentatives = new JMenuItem("Définir un nombre de tentatives");
		options.add(definirTentatives);
		definirTentatives.addActionListener(this);

		definirCouleurs = new JMenuItem("Définir un nombre de couleurs");
		options.add(definirCouleurs);
		definirCouleurs.addActionListener(this);

		definirPions = new JMenuItem("Définir un nombre de pions");
		options.add(definirPions);
		definirPions.addActionListener(this);

		//creations menu Jeux et sous menus
		jeux = new JMenu("Jeux");
		barreMenus.add(jeux);
		
		definirCombinaison= new JMenuItem("Définir votre combinaison");
		jeux.add(definirCombinaison);
		definirCombinaison.addActionListener(this);

		//creation menu aide
		aide = new JMenu("?");
		barreMenus.add(aide);

		about= new JMenuItem("About");
		aide.add(about);
		about.addActionListener(this);
		this.setVisible(true);
	}
	//surdef de ActionPerformed // ecouteur
	public void actionPerformed (ActionEvent e){
		Object source = e.getSource();
		//si on clique sur nouvelle partie, on lance une nouvelle partie. /* A REDEFINIR!!!!!!!!!!!!!!!*/	
		if (source == nouveauJeu) { 
			Jeu j;
			j=new Jeu(4,5,5);
		
		}
		// on permet la fermeture du programme
		if (source == ferme){
			//this.setVisible(false);
			System.exit(0);
		}
		// on permet la definition des nbTentatives	
		if (source == definirTentatives){
			String txt = JOptionPane.showInputDialog(null, "Donnez le nombre de tentatives autorisées:");
			if (txt == null){
				setNbTentatives(5);		/!\ c'est ici le problème	
			}
			else{
				setNbTentatives(txt);		ici aussi	
			}
		}
	}
	//surcharge TOSTRING
	public String toString() { return "La classe est la classe qui construit la fenetre principale";}
}