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
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 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;} }
Ici vous trouverez une ligne System.out.print("ok"+nbPions);
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; } }
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
Partager