Bonjour,

Je voudrais simplement avoir une confirmation à ce propos

Dans le code de la classe Partie , le fait de créer et recréer une instance Partie1 de la classe Partie à chaque fois qu'un utilisateur emet le souhait de rejouer n'a aucune importance, puisqu'à chaque fois c'est une nouvelle instance de la classe Partie qui est créée.
Donc peu importe qu'on l'appelle Partie1 ou autrement, puisqu'à chaque fois qu'on reentre dans le programme c'est un nouvel espace mémoire qui est crée
lorqu'on execute l'instruction Partie Partie1= new Partie(nombre_jouers,nom_joueur_principal);

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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
 
import java.io.*;
import java.util.*;
import javax.swing.*;
public class Partie {
 
	int nbreJoueur;// déclaration de la variable nbreJoueur de type int
	Joueur [] tabJoueur;// déclaration d’un tableau de nom tabJoueur qui contient des éléments de type Joueur
	Joueur croupier ;// déclaration de la variable croupier de type Joueur
	JFrame JF1 ;
 
	JOptionPane jop1;
	String texte_final="";
	Partie(int nbre, String nomJPrincipal){
		this.nbreJoueur = nbre;
		this.tabJoueur= new Joueur[nbre];
		this.croupier = new Joueur("croupier");
 
		this.tabJoueur[0] = new Joueur(nomJPrincipal);
		for(int i=1; i<= tabJoueur.length-1;i++){
 
			tabJoueur[i]= new Joueur("Joueur" + i);
		}// fin de boucle for
 
 
	}// fin de constructeur de la classe Partie
 
public void tirageInitial(){
 
	//texte_final="";
	for(int i =0; i<= tabJoueur.length-1;i++){
 
		tabJoueur[i].tirageUnJoueur();
 
		this.texte_final = this.texte_final + tabJoueur[i].texte_final_joueur +"\n";
 
		System.out.println( tabJoueur[i].texte_final_joueur);
 
 
	}// fin de for
 
 
	croupier.tirageUnJoueur();
 
	texte_final= texte_final+this.croupier.texte_final_joueur+"\n";
	System.out.println(texte_final);
 
	JOptionPane.showMessageDialog(null," "+ this.texte_final,"affichage des joueurs et des scores", JOptionPane.CLOSED_OPTION);	
 
 
 
}// fin de méthode tirageInitial
 
 
public void jouer(){
	this.tirageInitial();
}
 
public void affichergagnant(){
 
	int i ; 
	int max_tabJoueur_points_obtenus= this.tabJoueur[0].totalPoint;
	int index_maximum_total_points_1=0;
 
	//on est obligé d'initialiser à 1 la valeur de cetre variable pour qu'elle puisse passer à 
	//2 dès qu'il y aura deux joueurs qui obtiendront le même nombre de points
	int nbre_joueurs_execaux=1;
 
	// boucle for qui parcourt le tableau tabJoueur de la partie en cours pour déterminer 
	//le joueur qui a obtenu le plus de points
	for(i=1;i<this.tabJoueur.length;i++ ){
 
		if(this.tabJoueur[i].totalPoint> max_tabJoueur_points_obtenus)
		{
			max_tabJoueur_points_obtenus=this.tabJoueur[i].totalPoint;
			//on retient l'index de l'élément pour lequel on a obtenu le nombre maximum de points
			index_maximum_total_points_1=i;
			//Si auparavant il y eu des execaux , le fait qu'il existe un nombre de points supérieur
			//à celui des joueurs execaux annule le fait qu'il y ait des execaux
			//et la variable nbre_joueurs_execaux est réinitialisée à sa valeur première
			nbre_joueurs_execaux=1;
			System.out.println(nbre_joueurs_execaux);
 
 
	}// fin de if this.tabJoueur[i].totalPoint> max_tabJoueur_points_obtenus
 
	// si on est dans le cas où le joueur courant a un  nombre de points
		//==max_tabJoueur_points_obtenus 
 
	// 
	else if (this.tabJoueur[i].totalPoint== max_tabJoueur_points_obtenus)
	{
		nbre_joueurs_execaux++;
		System.out.println(nbre_joueurs_execaux);
 
 
 
	}// fin de else if 
 
 
 
 
	}//fin de boucle for
 
 
 
 
 
 
 
 
 
 
	//1er cas : s'il n'y a pas de joueurs execaux(nbre_execaux==1) et si le nombre de points maximum du tableau est > nombre de points du croupier
	//le gagnant est donc le joeur qui se trouve à l'index index_maximum_total_points_1 du tableau
 
 
	if (nbre_joueurs_execaux==1 && max_tabJoueur_points_obtenus>this.croupier.totalPoint)
 
	{JOptionPane.showMessageDialog(null,"le gagnant de la partie est "+this.tabJoueur[index_maximum_total_points_1].nom + " avec "+ this.tabJoueur[index_maximum_total_points_1].totalPoint+ " points","résultat de la partie", JOptionPane.CLOSED_OPTION);
	}// fin de  if if (nbre_joueurs_execaux==1 && max_tabJoueur_points_obtenus>this.croupier.totalPoint)
 
	//2eme cas :quelque soit le nombre de joueurs execaux (nbre_execaux==1) dans le tableau
	//et si le nombre de points maximum du tableau est < nombre de points du croupier
	else if ( max_tabJoueur_points_obtenus<this.croupier.totalPoint)
 
		{JOptionPane.showMessageDialog(null,"le gagnant de la partie est le croupier avec "+this.croupier.totalPoint+ " points "," résultat de la partie", JOptionPane.CLOSED_OPTION);
		}// fin de  if if ( max_tabJoueur_points_obtenus<this.croupier.totalPoint)
 
 
	else if (nbre_joueurs_execaux==1 && max_tabJoueur_points_obtenus==this.croupier.totalPoint)
	{
		JOptionPane.showMessageDialog(null,"il n' y a pas de gagnant car le croupier et le joueur "+this.tabJoueur[index_maximum_total_points_1].nom + "  sont à égalité", "résultat de la partie", JOptionPane.CLOSED_OPTION);	
	}
 
	// si le nombre de joueurs execaux est > 2( nbre_joueurs_execaux>2)et max_tabJoueur_points_obtenus est > au nombre total de points du croupier(this.croupier.totalPoint)
	//alors la partie n'a pas de gagnant
	else if (nbre_joueurs_execaux>=2 && max_tabJoueur_points_obtenus>this.croupier.totalPoint)
 
		{
			//System.out.println("il ya trop de joueurs execaux, cette partie n' a pas de gagnant");
			JOptionPane.showMessageDialog(null,"il y a " +nbre_joueurs_execaux+"  joueurs execaux, cette partie n' a pas de gagnant","résultat de la partie", JOptionPane.CLOSED_OPTION);
		}// fin de if (nbre_joueurs_execaux>2  && max_tabJoueur_points_obtenus>this.croupier.totalPoint)
 
 
		// si le nombre d'execaux est >= 2 et que le contenu de la variable
		//max_tabJoueur_points_obtenus est < nombre total de points du croupier
 
 
//		 dans le cas où nbre_joueurs_execaux>=2 et max_tabJoueur_points_obtenus=this.croupier.totalPoint)
 
		else if  (nbre_joueurs_execaux>=2 && max_tabJoueur_points_obtenus==this.croupier.totalPoint)
 
 
				{//System.out.println("il y a " +nbre_joueurs_execaux+"  joueurs execaux et la partie n'a pas de gagnant");
				JOptionPane.showMessageDialog(null,"il y a " +nbre_joueurs_execaux + "  joueurs execaux et la partie n'a pas de gagnant","résultat de la partie", JOptionPane.CLOSED_OPTION);
 
				}//fin de if (nbre_joueurs_execaux>=2 && max_tabJoueur_points_obtenus==this.croupier.totalPoint)
 
 
 
 
}// fin de afficher gagnant
 
	public static void main(String[] args) {
 
		int temp=4;
	do{
 
		try{
 
		String inputValue1 = JOptionPane.showInputDialog("Veuillez saisir un nombre de joueurs" );
		//int temp1=0;//=JOptionPane.showInputDialog(null, "Veuillez saisir un nombre de joueurs", "saisie",JOptionPane.CLOSED_OPTION );
		/*if (temp1 ==JOptionPane.CANCEL_OPTION){
			System.exit(0);
		}*/
 
 
		int nombre_joueurs=Integer.parseInt(inputValue1);
 
		String inputValue2 = JOptionPane.showInputDialog("Veuillez saisir un nom de joueur principal" );
 
		String nom_joueur_principal=inputValue2;
 
		Partie Partie1 =  new Partie(nombre_joueurs, nom_joueur_principal);
 
		Partie1.jouer();
 
		Partie1.affichergagnant();
 
		 temp = JOptionPane.showConfirmDialog(null, "Voulez vous faire une autre partie?", "Rejouer ou pas", JOptionPane.YES_NO_OPTION);
 
		}// fin de try
		catch(Exception ex)
		{
			System.out.println(ex);
			System.out.println(ex.toString());
			System.out.println(ex.getMessage());
		}// fin de catch
 
	}// fin de do
 
	while (temp ==JOptionPane.YES_OPTION );
 
 
	}// fin de main
 
	}// fin de classe Partie.java
Ma seconde question est la suivante

Dans la méthode afficherjoueur ci-dessous, il existe la variable locale texte_cartes_tirees.
Si je suis dans une autre classe que la classe partie, puis je avoir accès à cette variable en ecrivant afficherjoueur().texte_cartes_tirees?
Après un essai je me suis rendue compte que non mais je ne comprends pas pourquoi puisque la méthode afficherjoueur()est publique .
N'est il pas possible d'accéder à sa variable texte_cartes_tirees?
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
 
 
 
public  void afficherjoueur(){
 
		String texte_cartes_tirees="";	
		System.out.println(this.nom);
 
		for(int i =0;i<=nbreTirage-1;i++)
		{
 
		//this.texte_cartes_tirees=this.texte_cartes_tirees +" "+ tabCarte[i].afficherCarte()+ "et"; 
		texte_cartes_tirees=texte_cartes_tirees +" "+ tabCarte[i].afficherCarte(); 
		//
		}// fin de for 
 
		System.out.println(totalPoint);
 
		texte_final_joueur = texte_final_joueur + "le joueur "+this.nom+ " a obtenu  "+ this.totalPoint + " points  avec les cartes  "+ texte_cartes_tirees;
		 //this.texte_final_joueur = this.texte_final_joueur + "le joueur "+this.nom+ " a obtenu  "+ this.totalPoint + " points  avec les cartes  "+ this.texte_cartes_tirees;
 
 
 
		}// fin de méthode afficherJoueur
Pour finir, pouvez vous m'indiquer la(es) signature(s) exacte(s) de la méthode showinputdialog car toutes les signatures des méthodes de type showxxxdialog ne fonctionnent pas pour cette méthode.

Que signifie l'option closed_option utilisée en argument de cette méthode.

Je vous remercie encore beaucoup de votre aide et vous souhaite une très bonne année 2009 pleine de tout et de bonnes lignes de code!!

Cordialement.

Nathalie