Bonjour,

Je crée un MasterMind dans le cadre d'un exercice pour la fac. Le but n'est pas de vous demander la solution ni de la pomper.

J'ai créée mes classes de mon programme.
Lorsqu'on lance le programme il demande le nombre de pions à deviner, le nombre de couleurs(ici remplace par les chiffres), et le nombres de tentatives.

quand le prog me demande le nombre de pions (exemple je lui informe 8). J'ai mis une ligne de test qui m'affiche le nombre de pions (ici nbPions), il va m'indiquer dans tous les cas 4 alors que précédemment je lui ai indiqué 8.
Alors est ce un problème de variable qui passe pas à travers les classes ou autres?

Pourriez vous me conseiller sur le fait que la valeur de la variable nbPions ne soit pas celle attendue.
Si vous avez d'autres conseils pour le prog, je suis preneur.

Voici mes fichiers.

Jeu.java
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
 
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 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;}
 
}
Partie.java
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
//sert à la lecture au clavier
import java.util.Scanner;
 
public class Partie extends Jeu{
	// on crée une combinaison à n cellules selon ce qu on a déclaré dans le constructeur
	protected int [] combinaison; 
	//on crée une variable qui va acceuillir la réponse
	protected int [] reponse;
	//on définit les constructeurs par défaut
	public Partie(){ setPartie();}
	//on déclare la méthode qui va définir la combinaison
	public void setPartie(){
		System.out.print("ok"+nbPions);
		//on définit le nombre de pions dans la combinaison
		combinaison = new int[nbPions];
		//on introduit
		System.out.println("Vous allez définir votre combinaison:");
		// on donnes des valeurs à la combinaisons, il faut passer sur chaque positions du tab
		for (int i=0; i<nbPions; i++){
			//ceci sert pour la lecture au clavier.
			Scanner clavier = new Scanner (System.in);
 
			System.out.print("Choisissez un chiffre entre 0 et 9? ");
			int tmp = clavier.nextInt();
			combinaison[i]=tmp;
		}
 
	}
	//une méthode pour retourner la combinaison. On affiche chaque él du tableau
	public void getCombinaison(){
		System.out.print("la combinaison est: ");
		for (int i=0;i<nbPions;i++){
			System.out.print(combinaison[i]+" ");
		}
	}
	//on surcharge toString
	public String toString(){ return "la combinaison a "+nbPions+" couleurs";}
 
	//on lit la réponse dans une méthode
	public void setReponse(){
		// on définit le nombre d'el qui compose la réponse
		reponse =new int[nbPions];
		//on introduit
		System.out.println("Vous allez définir votre réponse:");
		// on donnes des valeurs à la reponse, il faut passer sur chaque positions du tab
		for (int i=0;i<nbPions;i++){
			//	ceci sert pour la lecture au clavier.
			Scanner clavier = new Scanner (System.in);
			System.out.print("Choisissez un chiffre entre 0 et 9? ");
			int tmp = clavier.nextInt();
			reponse[i]=tmp;
		}
	}
	//	une méthode pour retourner la Reponse. On affiche chaque él du tableau
	public void getReponse(){
		System.out.print("la reponse est: ");
		for (int i=0;i<nbPions;i++){
			System.out.print(reponse[i]+" ");
		}
	}
	//on définit le nombre de pions bien placés
	public int bienPlaces(){
		//je définis une variable qui va définir le nombre de pions bien placés
		int bp=0;
		//on compare chaque el de la reponse aux el de la combi, et qu elle sont bien placé
		for (int i=0;i<nbPions;i++){
			if (reponse[i]==combinaison[i]){
				bp++;
			}
		}
		return bp;
	}
	//on définit le nombre de pions mal placés
	public  int malPlaces(){
		//je définis une variable qui va définir le nombre de pions mal placés
		int mp=0;
		//on compare chaque el à tous les él afin de voir si il se trouve dans la combi, et dans une autre boucle on fait el par el de la combi
		for (int j=0;j<nbPions;j++){
			for (int i=0;i<nbPions;i++){
				if (reponse[i]==combinaison[i]){
					mp++;
				}
			}
		}
		return mp;
	}
 
}
Ici vous trouverez une ligne System.out.print("ok"+nbPions);
C est ici qu il m indique 4 tout le temps. Et ce n'est pas le 4 que j ai mis par défaut dans le constructeur de Jeu car j'ai déjà changer la valeur par défaut, et il continue à mettre 4.

Programme.java
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
import java.util.Scanner;
 
 
public class Programme {
	public static void main (String [] args){
 
 
		//ceci sert pour la lecture au clavier.
		Scanner clavier = new Scanner (System.in);
		//on affiche et on demande le nombre de pions, de couleurs et de tentatives
		System.out.println("Une nouvelle partie va être lancée");
		System.out.print("Choisissez un nombre de pions: ");
		int tmpNbPions = clavier.nextInt();
 
		System.out.print("Choisissez un nombre de couleurs: ");
		int tmpNbCouleurs = clavier.nextInt();
 
		System.out.print("Choisissez un nombre de tentatives: ");
		int tmpNbTentatives = clavier.nextInt();
		//on appele le constructeur pour les définir
		Jeu j1 = new Jeu(tmpNbPions,tmpNbCouleurs,tmpNbTentatives);
 
		/** OK CA MARCHE BIEN    TRACES DE TEST
                //on va tester si les variables sont enregistrées
                System.out.println(j1.getnbPions());
                System.out.println(j1.getnbCouleurs());
                System.out.println(j1.getnbTentatives());
                
                */
 
		// on va définir une combinaison
		Partie P1 = new Partie();
		P1.getCombinaison();
	}
}

D'avance merci pour votre aide