Aide pendu java svp
Coco
-
Desperaxe Messages postés 155 Statut Membre -
Desperaxe Messages postés 155 Statut Membre -
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
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Jeu du pendu - Télécharger - Vie quotidienne
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
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é :)