Partage
  • Partager sur Facebook
  • Partager sur Twitter

aide pour mon MasterMind

Sujet résolu
    20 janvier 2011 à 17:35:34

    Voici mon problème.Je suis étudiant en informatique et on apprend java comme langage objet.Notre prof nous as donner un projet a faire(chacun différent) et elle nous impose l'interface graphique,alors que l'on na pas vue en cours!Donc je voudrai avoir vos idée pour que je puisse intégrée une interface graphique a mon projet de MasterMind en version chiffre.(Je doit rendre mon projet Jeudi 27 Janvier).Toute critique ou amélioration pour mon code de votre part est la bien venu !

    import java.util.*;
    
    class MasterMind {
        private static Scanner scanner = new Scanner(System.in);
        
      public static void main(String[] args) {
          MasterMind m = new MasterMind();
          m.mastermind(4, 9, 10);
      }
    
     
    //Tire une combinaison à deviner
    
         void tirerCombinaison(int combinaison [], int n, int max) {
        for (int i = 0; i < n; i++) {
    	combinaison [i] =(1 + (int) (Math.random() * max));
          }
      }
    
      /*Permet de lire la combinaison proposée
       par le joueur*/   
    
       void demanderCoup(int combinaison [], int n){
        System.out.print("Entrez les " +n+ " chiffres de votre proposition");
        System.out.println("(faite des espace entre chaque chiffres et terminés par un retour chariot) :");
        for (int i = 0; i < n; i++) {
          combinaison[i] = scanner.nextInt();
        }
      }
    
      /*Permet de comparer la combinaison à deviner avec la 
       combinaison proposée par le joueur.
       Dans reponse[0] sera stocké le nombre d'éléments bien devinés 
       et correctement placés.
       Dans reponse[1] sera stocké le nombre d'éléments bien devinés
       mais mal placés.
       return true si la bonne combinaison est trouvée et sinon sa return false*/
       
       
        boolean compare(int n, int combinaison1 [], int combinaison2 [],int reponse []) {
        int nbMp = 0;
        int nbOk = 0;
        boolean [] marque = new boolean[n];
        boolean trouve = true;
        /*cette sert à trouver 
        les éléments bien devinés et correctement placés.
        Le tableau marque permet de marquer de tels
        éléments pour qu'ils ne soient pas compter
        plusieurs fois.*/
          for (int i = 0; i < n; i++) {
          if (combinaison1 [i] == combinaison2 [i]) {
            nbOk++;
            marque[i] = true;
          } else {
            trouve = false;
            marque[i] = false;
          }
        }
          // la deuxième boucle suivante sert à identifier les
        // éléments bien devinés mais mal placés.
        for (int i = 0; i < n; i++) {
          if (combinaison1[i] != combinaison2[i]) {
            int j = 0;
            boolean trouveMalPlace = false;
            while ((j < n) && !trouveMalPlace) {
              if (!marque[j] && (combinaison1[i] == combinaison2[j])) {
                nbMp++;
                marque[j] = true;
                trouveMalPlace = true;
              }
              j++;
            }
          }
        }
    
    
        reponse[0] = nbOk;
        reponse[1] = nbMp;
        return trouve;
      }
    
        //Affichage d'une combinaison 
        
      void afficheCombinaison(int combinaison [], int n) {
        for (int i = 0; i < n; i++)
          System.out.print(combinaison[i]);
        System.out.println(" ");
      };
    
        /*Affichage des indications destinées au joueur*/
      
        
       void afficheReponse(int reponse []) {
        for (int i = 0; i < reponse[0]; i++)
    	System.out.print('#');
        for (int i = 0; i < reponse[1]; i++)
          System.out.print('O');
        System.out.println();
      }
    
        //Affichage du texte d'acceuil
       
         
       void bienvenue(int n, int max, int maxCoups) {
         System.out.println(" **- BIENVENUE DANS LE JEU DU MASTERMIND -**\n ");
         System.out.printf(" chiffres [compris entre 1 et " +max+ " avec répétitions possibles]\n");
         System.out.printf(" Saurez vous là trouver en moins de " +maxCoups+ "coups ?\n");
         System.out.println(" O = chiffre mal placée ; # = chiffre bien placée ");
      }
    
      
      
        //Regle du MasterMind
     void mastermind(int size, int maxDigit, int maxCoups) {
        int solution [] = new int[size];
        int proposition [] = new int[size];
        int nbCoups = 0;
        boolean trouve = false;
        int reponse [] = new int[2];
    
        bienvenue(size, maxDigit, maxCoups);
        tirerCombinaison(solution, size, maxDigit);
    
        do {
          demanderCoup(proposition, size);
          nbCoups++;
          trouve = compare(size, solution, proposition, reponse);
          afficheReponse(reponse);
        }
        while (!trouve && (nbCoups < maxCoups));
    
        if (trouve) {
          System.out.print("Bravo ! Vous avez trouvé le code en ");
          System.out.print(nbCoups);
          System.out.println(" coups");
        }
        else {
          System.out.println("Désolé ! Vous n'avez pas trouvé le bon code ...");
          System.out.println("Le bon code était : ");
          afficheCombinaison(solution, size);
          System.out.println("Au Revoir !!");
        }
      }
    
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2011 à 18:03:29

      Salut à toi jeune javatiste.

      Pour ton problème, tout est dans le sens dont tu prends l'obligation, de ta motivation et du temps dont tu disposes.
      Une IHM, c'est jamais qu'un ensemble de boites. Pour un mastermind, tu peux bien mettre simplement une box où le joueur entre son choix et un texte où tu affiches les résultats. C'est moche, c'est bête, mais c'est rapide.
      Après tu peux aussi la jouer plus classe, même là comme ça cash, je vois pas trop quoi faire comme interface. Éventuellement un ensemble de 5 minis zone de saisie accessibles ou le joueur met ses chiffres, 5 checkbox que tu check ou decheck selon les résultats (bonne position, se trouve dans la série, des conneries comme ça).
      Ca fait longtemps que j'ai pas trempé dans un petit projet comme ça, mais pour un mastermind j'avoue que l'interface n'est pas le premier truc qui me saute à l'esprit. Dans tout les cas, c'est simple et rapide à faire en général...Tout dépend de ce que tu veux quoi ^^
      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2011 à 21:06:22

        Je voudrais faire un truc sympa mais je ne dispose malheureusement pas d'assez de temps devant moi j'ai a peine 1 semaine!
        Quelqu'un pour m'aider s'il vous plait :(
        • Partager sur Facebook
        • Partager sur Twitter
          20 janvier 2011 à 23:06:34

          Salut.
          Déjà ton code n'est pas très POO pour moi. J'aurais fait un constructeur qui prend les paramètres de ta méthode mastermind, de façon à pouvoir adapter ta GUI à ces attributs.
          Que peut-on te conseiller de plus, si ton code fonctionne (je ne l'ai pas essayé), tu trouvera par exemple sur Google Image des centaines de captures d'écran de Mastermind, à toi de t'en inspirer.
          Si tu ne sais pas faire d'interfaces graphiques en Java, tu devrais commencer par lire le tuto de ce site, et revenir poser des questions plus précises quand tu auras commencé à faire quelque chose, parce que pour le moment à part te donner un code tout fait on ne peut pas faire grand chose pour toi, et ce n'est pas la politique de la maison ^^.
          • Partager sur Facebook
          • Partager sur Twitter
            20 janvier 2011 à 23:06:34

            Le message qui suit est une réponse automatique activée par un modérateur.
            Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
            Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


            Veuillez modifier le titre du sujet


            Bonjour,

            Ce sujet a un titre qui ne décrit pas correctement le sujet, ou il est écrit en majuscules.

            La présentation de votre message étant néanmoins correcte, nous ne fermons pas le sujet, mais vous êtes invité(e) à modifier son titre en éditant votre premier message.

            Cette modification doit être faite dans les plus brefs délais, sans quoi nous serons dans l’obligation de clore le sujet .


            Voici quelques correspondances pour vous aider à choisir au mieux votre titre :




            Comment fait-on pour éditer un titre ?

            Si vous êtes l'auteur du topic, vous pourrez uniquement le changer en éditant le premier post du topic à l'aide de l'icône Image utilisateur.



            Merci de votre compréhension :)
            Les modérateurs.
            • Partager sur Facebook
            • Partager sur Twitter

            aide pour mon MasterMind

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown