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

avec Java Discussion :

Projet en Java


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 16
    Points
    16
    Par défaut Projet en Java
    Bonjour a tous,voila je suis étudiant en informatique et nous avons étudier le langage Java.Notre prof nous a demander de faire un projet et mon projet et le jeu du "MasterMind" en version chiffre!Donc j'ai fait mon projet mais là elle nous dit qu'il n'y as aucune class dans mon projet.Donc je voudrait avoir votre avis sur mon code et je voudrait aussi savoir comment puis-je faire plusieurs class.Désoler je c'est que se sont des question idiote mais je suis en L1 et un grand débutant ! Toute critique ou amélioration sur mon code sera la bienvenue ! (Je doit rendre mon projet Jeudi 27 Janvier) Merci

    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
     import java.util.*;
     
    class MasterMind {
        private static Scanner scanner = new Scanner(System.in);
     
      public static void main(String[] args) {
        mastermind(4, 9, 10);
      }
     
     
    //Tire une combinaison à deviner
     
        static 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*/   
     
      static 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*/
     
     
       static 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 
     
     static 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*/
     
     
      static 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
     
     
      static 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
    static 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 !!");
        }
      }
     
    }

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Bonjour,

    Ce n'est pas qu'il n'y a pas de class dans votre projet, il y en a bien une, mais tout est static. Votre professeur a raison.

    Vous êtes dans un langage objet pas dans un langage procedural.

    Gardez static que le main, vous êtes obligé, et enlevez partout ailleurs static.

    Puis réécrivez votre main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static void main(String[] args) {
       MasterMind m = new MasterMind();
       m.mastermind(4, 9, 10);
      }
    Vous voyez la différence ?

    Si vous ne voyez pas, relisez votre cours sur les objets et l'instanciation.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    Donc si j'ai bien compris le code donne ça maintenant !
    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
    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 !!");
        }
      }
     
    }
    Est là mon prof ne va pas m'engueuler(rire)

  4. #4
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Points : 402
    Points
    402
    Par défaut
    Je serais toi, j'externaliserai le "main" dans une classe ou je ne mettrais QUE ca.

    Comme ca tu auras ta classe "MastermindMain" (par exemple) qui contiendra uniquement la méthode static "main" tel qu'elle est écrite actuellement.

    Je déteste avoir le "main" au milieu d'une classe faisant tout un tas d'autres choses...
    C'est en aidant les autres qu'on en apprend beaucoup soi-même

  5. #5
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    J'espère te guider dans la bonne voie en te proposant cela:

    Essaye de faire en sorte que ta classe MasterMind puisse être utilisée par plusieurs personnes qui vont implémenter chacun dans son coin une interface graphique pour ton jeu. L'un va le faire sous forme de commande via la console, un autre une interface graphique SWING, un autre avec JavaFX par exemple.

    Pour cela, il faut que ta classe Mastermind puisse offrir des méthodes permettant de:
    - initialiser la grille
    - récupérer l'état de la grille
    - récupérer le nombre de billes bien et mal positionnées
    - récupérer le nombre de coup joués
    - proposer une solution
    - vérifier si le joueur a gagné ou pas.

    Il te faudra d'autres méthodes éventuellement.

    Il ne faut pas que ta classe Mastermind utilise des routines tel que Scanf, paint ou draw etc...

    Une fois ce travail effectué, tu créés un MasterMindMain ou un nom qui va bien, cette classe sera l'interface entre l'utilisateur et la classe Mastermind.

    Si tu as des questions, n'hésite pas à les poser.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    billynirvana en faite je suis tout seul pour faire le projet! Et j'ai moins d'une semaine pour faire l'interface graphique.Je voudrai faire un truc sympa mais je n'ai jamais eu de cours sur l'interface graphique.(C'est le jeu du MasterMind avec des chiffres(on doit trouver le bon code))

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par z9999 Voir le message
    Donc si j'ai bien compris le code donne ça maintenant !
    C'est un mieux, mais ça reste une grosse classe avec plein de code.

    Pour bien faire les choses, vous devriez avoir, par exemple, une classe qui correspond au Jeu. Un jeu ça a un certain nombre de Ligne, quand on ajoute une ligne on reçois en réponse son Résultat, qu'on peux alors afficher. Quand on a fait la bonne ligne le jeu est gagné, quand on en a mis trop, le jeu est perdu.

    Pour savoir le résultat, le jeu va comparer la Ligne encodée par l'utilisateur avec la ligne de référence (celle qu'il faut trouver). vous aurez enfin l'Interface qui va prendre les choix de l'utilisateur et donner les résultats.

    Bref, divisez pour régner.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    Envoyé par tchize_
    Pour bien faire les choses, vous devriez avoir, par exemple, une classe qui correspond au Jeu
    En faite c'est deja la classe jeu

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par z9999 Voir le message
    En faite c'est deja la classe jeu
    Non, pour le moment c'est la classe "Grosse application" qui sert de fourre tout, c'est pas de la programmation objet.

  10. #10
    Membre confirmé Avatar de billynirvana
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 472
    Points : 552
    Points
    552
    Par défaut
    Ce que je t'ai proposé est pour te mener sur la bonne voie pour structurer ton application. Bien entendu il n'est pas nécessaire de développer une interface graphique.

    Ce que je voulais te faire comprendre c'est qu'il faut séparer la partie intelligence/métier de ton jeu et son interface d'utilisation.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    ok j'ai compris désolé

  12. #12
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Points : 188
    Points
    188
    Par défaut
    Mais quelle idée d'apprendre aux étudiants l'orienté objet en L1

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 42
    Points : 16
    Points
    16
    Par défaut
    exhortae
    Mais quelle idée d'apprendre aux étudiants l'orienté objet en L1
    pourquoi ? Il ne devrai pas?!

    tchize_
    Non, pour le moment c'est la classe "Grosse application" qui sert de fourre tout, c'est pas de la programmation objet.
    Sinon pour mon projet je pense avoir compris j'ai mis les 3 fichiers pouvez-vous y jeter un coup d'œil est me dire ce que vous en pensez s'il vous plait
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. explorateur de projets en java
    Par jalam dans le forum Langage
    Réponses: 4
    Dernier message: 23/02/2007, 23h26
  2. Projet en Java - Quelle Oracle?
    Par TravelMate dans le forum Oracle
    Réponses: 5
    Dernier message: 31/08/2006, 14h07
  3. Projet en Java/J2EE dans la finance
    Par speedster dans le forum Etudes
    Réponses: 11
    Dernier message: 16/12/2005, 23h01

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