Aide pendu java svp

Fermé
Coco - Modifié par baladur13 le 31/01/2017 à 18:30
Desperaxe Messages postés 137 Date d'inscription dimanche 22 février 2015 Statut Membre Dernière intervention 11 novembre 2021 - 2 févr. 2017 à 17:20
Bonjour, j'ai un problème pour insérer le nombre d'essais maximum c'est-à-dire : 7. Voici mon code :
import java.util.Arrays;
import java.util.Scanner;


public class LePenduAlgoPrincipale{   

public static void main(String[] args) {
 String[] tabMots = {"chien","papier","souris","enfant","cacao","arbre","pendu","elephant","fraise","jardin","eau","dragon"};
 // Tableau de mots pour en sélectioner un au hasard.

 int randomMotNombre = (int) (Math.random() * tabMots.length);
 // Création d'un tableau pour les lettres entrées.
 char[] LettresEntrees = new char[tabMots[randomMotNombre].length()];
 int essai = 0;

 boolean MotEstDevine = false;
 //si LettresEntrees renvoient false signifie que l'utilisateur a deviné toutes les lettres.
 do {

   switch (LettresEntrees(tabMots[randomMotNombre], LettresEntrees)) {
              case 0:
                  essai++;
                  break;
              case 1:
                  essai++;
                  break;
              case 2:
                  break;
              case 3:
                  MotEstDevine = true;
                  break;
          }
          } while (! MotEstDevine || essai==7);
          System.out.println("Le mot est " + tabMots[randomMotNombre] +
              " Le nombre d'echec est de " + (essai -findEmptyPosition(LettresEntrees)));}

   // L'utilisateur entre une lettre pour deviner le mot,
   //Retourne 0 si la lettre entrée n'est pas dans le mot (compte comme essai),
   //Retourne 1 si la lettre a été saisie 1ère fois (compte comme essai),
   //Retourne 2 si la lettre déjà devinée a été REentered,
   //Retourne 3 si toutes les lettres ont été devinées

   public static int LettresEntrees(String mot, char[] LettresEntrees)    {
          System.out.print("Entrer une lettre ");

   if (! printMot(mot, LettresEntrees))

    return 3;
           System.out.print(" > ");
           Scanner input = new Scanner(System.in);
           int PositionVide = findEmptyPosition(LettresEntrees);
           char UtiliInput = input.nextLine().charAt(0);
           if (inLettresEntrees(UtiliInput, LettresEntrees)) {
              System.out.println(UtiliInput + " est déjà dans le mot");

    return 2;
          }
           else if (mot.contains(String.valueOf(UtiliInput))) {
              LettresEntrees[PositionVide] = UtiliInput;

    return 1;
          }
           else {
              System.out.println(UtiliInput + " n'est pas dans le mot, dommage !");

    return 0;
              }
      }
   //Mettre le mot avec des tirets pour les lettres cachées, retourne vrai si


    public static boolean printMot(String mot, char[] LettresEntrees) {
          // Toutes les lettres dans le mot
          boolean tiret = false;
          for (int i = 0; i < mot.length(); i++) {
              char lettre = mot.charAt(i);
              // Vérifier si la lettre a déjà été entré par l'utilisateur

       if (inLettresEntrees(lettre, LettresEntrees))
                  System.out.print(lettre); // Si oui, mettre la lettre

       else {
                  System.out.print('-');
                  tiret = true;
              }
          }
          return tiret;}



  // Vérifier si la lettre est déjà dans le mot
      public static boolean inLettresEntrees(char lettre, char[] LettresEntrees) {
          return new String(LettresEntrees).contains(String.valueOf(lettre));
      }
      public static int findEmptyPosition(char[] enteredLetters) {
          int i = 0;
          while (enteredLetters[i] != '\u0000') i++;
          return i;
      }
  }




EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

1 réponse

Desperaxe Messages postés 137 Date d'inscription dimanche 22 février 2015 Statut Membre Dernière intervention 11 novembre 2021 7
Modifié par Desperaxe le 2/02/2017 à 17:21
Je ne saurai pas dire si le problème vient de là, mais dans ta boucle while contenant le switch : Tu dis que " Tant que le mot n'est pas trouvé OU que le nombre d'essai est égal à 7 ".
Tu devrais pas plutôt dire
while (! MotEstDevine || essai!=7);
?
Ne pètes pas un câble. Débranches le juste, c'est moins risqué :)
0