Aide pendu java svp
Coco
-
Desperaxe Messages postés 137 Date d'inscription Statut Membre Dernière intervention -
Desperaxe Messages postés 137 Date d'inscription Statut Membre Dernière intervention -
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:
- Aide pendu java svp
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Jeu du pendu - Télécharger - Vie quotidienne
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
1 réponse
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
Ne pètes pas un câble. Débranches le juste, c'est moins risqué :)
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é :)