IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

aide projet Mastermind


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut aide projet Mastermind
    Bonjours a tous
    Bon voila je suis entrain de travailler sur un mini projet concernant le jeux mastermind.
    Les classes que j'ai créer sont : Indication, Suite, StdInput et un main que j'ai appelé Mastermind.
    Le probleme que j'ai est au niveau du main, plus précisément au niveau d'une méthode que j'ai appelé play(). Voici son codage:

    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 static void play() throws IOException{
     
    		Suite S1=Suite.genererSecret();
    		System.out.println("J'ai choisi une suite de 4 nombres\nAvous de deviner");
    		int i=0;
    		for(i=0; i<8; i++){
    			System.out.println("Essaie Numero"+i+" :");
    			System.out.println("saisissez Votre choix :");
    			Suite S2=new Suite(Integer.parseInt(StdInput.readline()));
    			S2.toString();
    			Indication indication=S1.compare(S2);
    			indication.toString();
     
    			if(indication.nbBienPlaces==4)
    				System.out.println("nbBienPlacesous avez gagner avec un nombre dessaie"+i);
     
    			else
    				indication.toString();
     
    			if(i==8)
    				System.out.println("dsl Vous avez perdu!!");
     
    		}
    	}
    Le soucis c'est que lors de l'exécution, au moment du teste, il me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Que desirez vous faire:
    	# Jouer contre l'ordinateur....1
    	# Quitter......................2
    1
    J'ai choisi une suite de 4 nombres
    Avous de deviner
    Essaie Numero0 :
    saisissez Votre choix :
    1234
    Essaie Numero1 :
    saisissez Votre choix :
    en principe je doit avoir les indications mais celle la n'aparesse pas
    merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Bonjour
    ça serait sympa si tu mettais les balises code(#) dans l'editeur ou encadrant ton code.

    en principe je doit avoir les indications mais celle la n'aparesse pas
    Ou est ce que tu affiches les indications et ça n'apparait pas?
    C'est avec ça que tu affiches les indications ?

    ou plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.printon(indication.toString());
    ?
    @+
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  3. #3
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Bonjour,

    Travailles-tu sur le même projet que m_elkhaldi01 qui travaille aussi sur un projet de MasterMind ? (discussion ici)

    Parce que là, j'ai dû m'aider du code qu'il avait posté (classe MasterMind et Suite) pour pouvoir comprendre un peu plus ton code...

    Normalement, la méthode toString() doit renvoyer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return("les valeurs des 4 nombres de la suite sont :"+c1+c2+c3+c4);
    ce qui devrait s'afficher.

    Peux-tu poster ta classe Indication (et ta classe Suite si elle diffère de m_elkhaldi01) stp pour qu'on puisse voir ce qui ne va pas ?

    PS : N'oublie pas de mettre ton code entre les balises "code" en utilisant le bouton "#" quand tu rédige ton message, c'est plus lisible, merci.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    Oui merci bcp pour l'indication. C'est la premiére fois que j'utulise ce site pour poster quelque chose
    bon voila le code:
    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 static void play() throws IOException{
     
    Suite S1=Suite.genererSecret();
    System.out.println("J'ai choisi une suite de 4 nombres\nAvous de deviner");
    int i=0;
    for(i=0; i<8; i++){
    System.out.println("Essaie Numero"+i+" :");
    System.out.println("saisissez Votre choix :");
    Suite S2=new Suite(Integer.parseInt(StdInput.readline()));
    S2.toString();
    Indication indication=S1.compare(S2);
    indication.toString();
     
    if(indication.nbBienPlaces==4)
    System.out.println("nbBienPlacesous avez gagner avec un nombre dessaie"+i);
     
    else
    indication.toString();
     
    if(i==8)
    System.out.println("dsl Vous avez perdu!!");
     
    }
    }

  5. #5
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Merci pour les balises
    Mais tu as répété la méthode play() que tu avais mise dans ton premier post.
    Peux-tu donner ta classe Indication et aussi ta classe Suite dans le cas où elle diffère de m_elkhaldi01 ? Merci.

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    Oui, je pense qu'on travaille sur le meme projet!!
    bon je te poste mes classe.
    Code de la calsse Suite:
    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
    import java.lang.Math;
    public class Suite {
    	private int c1;
    	private int c2;
    	private int c3;
    	private int c4;
     
    	public Suite(int a, int b, int c, int d){
    		a= c1;
    		b= c2;
    		c= c3;
    		d= c4;
     
    	}
     
    	public Suite(int N){
    		/*if ((N<999)&&(N>6666)){
    			System.out.println("enter un nombre de 4 chiffres entre 1 et 6");
    		}
    		else{*/
    		String S= String.valueOf(N);
    		c1=S.charAt(0);
    		c2=S.charAt(1);
    		c3=S.charAt(2);
    		c4=S.charAt(3);
    		//}
    	}
     
    	public static Suite genererSecret(){
    		return new Suite((int)(Math.round((Math.random()*6)+1)),(int)(Math.round((Math.random()*6)+1)),(int)(Math.round((Math.random()*6)+1)),(int)(Math.round((Math.random()*6)+1)));
    	}
     
    	public Indication compare(Suite c){
    		int nb_bien=0;
    		int nb_mal=0;
    		int i=0,j=0;
    		String S1=(""+c1+c2+c3+c4);
    		String S2=(""+c.c1+c.c2+c.c3+c.c4);
    		for(i=0;i<S2.length();i++){
    			for(j=0;j<S1.length();j++)
    				if(S2.charAt(i)==S1.charAt(j)&& i==j)
    					nb_bien++;
    				else if(S2.charAt(i)==S1.charAt(j))
    					nb_mal++;
    			}
    		return new Indication(nb_bien,nb_mal);
    	}
     
    	public String toString(){
    		return ("La suite est ["+c1+c2+c3+c4+"]");
    	}
    }
    et voici le code de la classe Indication:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Indication {
     
    		public int nbBienPlaces;
    		public int nbMalPlaces;
     
    		public Indication( int a, int b){
    			a= nbBienPlaces;
    			b= nbMalPlaces;
    		}
     
    		public String toString(){
    			return ("Le nombre de bien placés est "+ nbBienPlaces +"Le nombre de mal places est "+ nbMalPlaces);
    		}
    }
    merci

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    else
    indication.toString();
    ce code n'affiche rien, la méthode toString() renvoie une chaine de caractère.

    Si tu veux afficher des données à l'écran, utilise la méthode fournie par le système :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println(ta chaine de caractère);
    dans ton cas, tu obtiendras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(indication.toString());

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    Bon tout d'abord je voudrais vous remericier pour votre aide et votre temps que vous consacrer
    alors le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(indication.toString())
    marche bien.
    Mais la je me suis rendu compte que la classe compare ne me donne pas de résulat.
    en effet avec le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Suite S1=Suite.genererSecret();
    System.out.println(S1.toString());
    je recoit La suite est [0000]
    et deuxiement, il me sort que le nombre de bien placé et de mal placé est 0 meme si je rentre la valeur :p.
    Je suis entrain de voir ça de ma part. Mais si il y a quelqu'un qui voit ce qui cloche, ca seré sympa de m' en faire part.
    merci encore.

  9. #9
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par 0coco0 Voir le message
    Je suis entrain de voir ça de ma part. Mais si il y a quelqu'un qui voit ce qui cloche, ca seré sympa de m' en faire part.
    Je ne suis pas certain que ça serait si sympa que ça... Si on fait tout le travail à ta place, tu n'apprendras pas grand chose. Essaye donc d'abord de comprendre ce qui ne va pas (ce n'est pas d'une complexité diabolique).

    Allez une piste tout de même, sans te donner la solution: en java on écrit de gauche à droite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable affectée = affectant
    et non pas l'inverse...
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    j'ai tout mijoter mais j'ai rien trouver.
    bon comme tu me la conseiller, j'ai commencer par essayer de trouver l'erreur.
    Je pense que l'erreur est au niveau de la classe Suite.
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public static Suite genererSecret(){
     
     
    		Suite S=new Suite((int)(Math.round((Math.random()*5)+1)),
    					(int)(Math.round((Math.random()*5)+1)),
    					(int)(Math.round((Math.random()*5)+1)),
    					(int)(Math.round((Math.random()*5)+1)));
    		return S;
    cette partie doit me retourne donc une suite aléatoire qui prend comme argument 4 entier.
    en effet (int)(Math.round((Math.random()*5)+1)) retourne des entiers aléatoire entre 1 est 6. Ce qui revient à construire une suite du type
    S(a,b,c,d)
    Mais quand j'ai fait les teste avec la méthode toString()
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public String toString(){
    		return ("La suite est ["+c1+" "+c2+" "+c3+" "+c4+"]");
    Ceci me retourne [0 0 0 0]

    C'est une analyse que j'ai faite. J'aimeré savoir votre avis deçu.
    merci

  11. #11
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    L'erreur est effectivement au niveau de la classe Suite, mais dans cette partie du code (prendre en compte l'indication de mon post précédent):

    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
    public class Suite {
    	private int c1;
    	private int c2;
    	private int c3;
    	private int c4;
     
    	public Suite(int a, int b, int c, int d){
    		a= c1;
    		b= c2;
    		c= c3;
    		d= c4;
     
    	}
    	/* ....... */
    }
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    voila frere la solution du probleme
    #public class Suite {
    private int c1=1;
    private int c2;
    private int c3;
    private int c4;

    public Suite(int a, int b, int c, int d){
    c1=a;
    c2=b;
    c3=c;
    c4=d;

    }

  13. #13
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    Eh oui sur la voie ...............
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  14. #14
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 72
    Points
    72
    Par défaut
    bonjour a tous.
    Bon alors l'application et presque terminer.
    cependant il me reste un probleme que je n'arrive pas a résoudre car je n'arrive pas a le localiser.
    Dans la méthode play() j'ecrit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    System.out.println("Essaie Numero "+i+" :");
    	  System.out.println("saisissez Votre choix :");
              Suite S2;
              S2=new Suite(StdInput.ReadInt());
              System.out.println(S2.toString());
    ceci doit me donner la suite que j'ai entrer au clavier.
    cependant, il me sort une suite de type :
    La suite est [49 50 51 52] alors que j'ai rentrer la valeur 1234
    est ce que quelqu'un voi le problem??
    merci encore une fois

  15. #15
    Expert éminent

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Points : 8 107
    Points
    8 107
    Par défaut
    Bonjour, il faudrait que tu regarde d'un peu plus près ce que fait la méthode StdInput.ReadInt().
    En effet, les caractères que tu tapes au clavier sont codés en ASCII (tu trouvera pleins de tables de correspondances sur le net):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    0 = 48
    1 = 49
    2 = 50
    3 = 51
    4 = 52
    5 = 53
    6 = 54
    7 = 55
    8 = 56
    9 = 57
    Donc comme tu as tapé "1234" il te renvoit que tu as tapé [49 50 51 52]

    Donc tu as 2 solutions (ou peut être plus) :
    - Tu regarde la méthode ReadInt() et tu la modifie.
    - Tu fais une correspondance : Si la méthode te renvoie 49, tu lui dit de renvoyer 1... (ou plus simplement tu soustrait 48 pour avoir la bonne valeur, puisqu'ici tu ne dois taper que des nombres normalement...)

    Edit : Si tu n'y as pas déjà pensé, pour rendre ton programme plus robuste, tu devrais "empêcher" (ou au moins vérifier) que l'utilisateur a bien entré des chiffres et pas des lettres...

Discussions similaires

  1. projets mastermind demande de l'aide
    Par m_elkhaldi01 dans le forum Langage
    Réponses: 9
    Dernier message: 11/01/2008, 09h57
  2. Aide projet Firefox
    Par KKshi666 dans le forum C++
    Réponses: 10
    Dernier message: 20/11/2006, 14h25
  3. Demande d'aide - Projet professionnel ambigu
    Par makechange dans le forum Emploi
    Réponses: 5
    Dernier message: 08/09/2006, 13h34
  4. Besoin d'aide projet d'info : la bonne paye sur C++ Builder.
    Par timsupra dans le forum C++Builder
    Réponses: 18
    Dernier message: 25/04/2006, 10h24
  5. aide projet dev
    Par Nickname dans le forum Langage
    Réponses: 16
    Dernier message: 06/02/2006, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo