Aide débutant jeu du pendu

Signaler
Messages postés
39
Date d'inscription
mardi 5 juillet 2005
Statut
Membre
Dernière intervention
29 octobre 2008
-
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
-
Bonsoir a tous. Je suis débutant en Java et j'ai essayé de créer le jeu du pendu ( de la façon la plus simple ). Seulement j'ai un petit problème en ce qui concerne le compteur des erreurs. Je veux qu'à la quatrième erreur (mauvaise lettre), le jeu s'arrête. Voici mon code source. Pouvez-vous me dire pourquoi ça ne marche pas comme je veux?
Merci d'avance...

public class THE_PENDU {


public static void main(String[] args) {

String Tab_Mots[] ={"maison","voiture","paysage"};
String Mot_A_Deviner;
char Tab_Mot_A_Deviner[];
char lettre_saisie;
int Nb_Aleatoire ;
int Nb_Mots;
int longueur_Mot_A_Deviner;
int cpt=0,cpt2=0;
boolean lettre_correcte= false;
int erreur=4;

Nb_Mots=Tab_Mots.length; // La longueur du tableau Tab_Mots et donc le nbr de mot
Nb_Aleatoire=(int)(Math.random()*Nb_Mots); // cherche un nbr aleatoire compris entre 0 et le nbr de mots
Mot_A_Deviner=Tab_Mots[Nb_Aleatoire]; // on met dans Mot_A_Deviner le mot a deviner
longueur_Mot_A_Deviner=Mot_A_Deviner.length(); // On prend la longueur du mot a deviner
Tab_Mot_A_Deviner= new char[longueur_Mot_A_Deviner]; //On crée un tableau de caractère de même taille que la longueur du mot a chercher

//ENTETE

System.out.println("*********************************");
System.out.println("*Bienvenue dans le jeu du pendu!*");
System.out.println("*********************************");
System.out.println("");

//FIN ENTETE

for(int i=0;i<longueur_Mot_A_Deviner;i++){

Tab_Mot_A_Deviner[i]='-';
}


System.out.println(Mot_A_Deviner+" "+longueur_Mot_A_Deviner);
System.out.println(Tab_Mot_A_Deviner);

while((cpt<longueur_Mot_A_Deviner)||(erreur<5)){
System.out.println("\nQuel lettre voulez-vous entrer? ");
lettre_saisie=Lire.c();

for(int i=0;i<longueur_Mot_A_Deviner;i++){
cpt2=cpt;
if(lettre_saisie==Mot_A_Deviner.charAt(i)){
Tab_Mot_A_Deviner[i]=lettre_saisie;
cpt++;
}
if(cpt2==cpt){
erreur++;
}
}

System.out.print(Tab_Mot_A_Deviner);
}
}
}
A voir également:

2 réponses

Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
ben , comme on a pas Lire.c() et que j'avais pas envie de me casser la tête sur ton code, et que j'avais rien de mieu à faire :o) ,
je l'ai entièrement refait le pendu .... et si tu es débutant je te conseille de prendre exemple sur mon code ... (que je met dans le prochain post, à la suite)

bon je dis pas que je suis un pro non plus mais bon ... et je te conseil aussi de respecter la nomenclature java
cad:
variables en minuscules mais majuscule pour préciser le début d'un nouveau mot ex: "maPremiereVariable" ou "ma"
une class commence par une majuscule mais le reste est en min ex : "Client" ou "ClientPotentiel"
une constante est en majuscule et un "_" pour préciser le début d'un nouveau mot ex: "MAX" ou "ESSAIS_MAXIMUM"
etc ... c assez important de prendre l'habitude dès le début pour faciliter la compréhension des codes des autres et même du tiens .. mais ca reste un conseil ...

voila j'espère que mon code t'aidera à corriger le tient / avancer dans ton projet
bonne chance et ++

code dans le message suivant --->>
Messages postés
54
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
13 avril 2006
1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ThePendu {

public static void main(String[] args) {

String[] tab_dico = { "maison", "voiture", "paysage" };
double limite (100.0 / tab_dico.length) / 100.0; // 0.33 si ya 3
// mots

double configuredRandom = Math.random() / limite; // (0.0 -> 0.99) /
// 0.33 rend (0.0 ->
// 2.99)

String motADeviner = tab_dico[(int) configuredRandom]; // le cast (int)
// permet de
// prendre que
// la partie
// entière soit
// (0 -> 2)
String motEnCreation = "";
int MAX_ERREUR = 5;
int nbChances = MAX_ERREUR;
boolean victoire = false;
char lettreSaisie;

for (int i = 0; i < motADeviner.length(); i++) {
motEnCreation += "-";
}

System.out.println("*********************************");
System.out.println("*Bienvenue dans le jeu du pendu!*");
System.out.println("*********************************");
System.out.println("");

// System.err.println("mot à deviner:"+motADeviner);

System.out.println("Vous avez " + MAX_ERREUR
+ " chances de découvrir le mot caché");

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

while (nbChances > 0 && !victoire) {
System.out.println(" " + motEnCreation);
System.out.println("tapez une lettre puis validez ( " + nbChances
+ " chances ):");
try {
lettreSaisie = br.readLine().charAt(0);
// System.err.println("lettreSaisie:"+lettreSaisie);
if (motADeviner.contains(new String("" + lettreSaisie))) {
System.out.println("Lettre trouvée !! :" + lettreSaisie);
String temp = motEnCreation;
motEnCreation = "";
for (int i = 0; i < motADeviner.length(); i++) {
if (motADeviner.charAt(i) == lettreSaisie) {
motEnCreation += lettreSaisie;
} else {
motEnCreation += temp.charAt(i);
}
}
} else {
System.out
.println("Le mot caché ne contient pas la lettre :"
+ lettreSaisie);
nbChances--;
}

// test de victoire
if (motEnCreation.equalsIgnoreCase(motADeviner)) {
System.out
.println("Félicitation, vous avez découvert le mot caché "
+ motADeviner + " !!");
victoire = true;
}

} catch (IOException e) {
e.printStackTrace();
System.err
.println("Une erreur c'est produite. l'application va se terminer");
System.exit(-1);

} catch (StringIndexOutOfBoundsException e) {

}
}

if (!victoire && nbChances <= 0) {
System.out.println("Désolé, vous avez perdu...");
System.out.println("Le mot recherché était : " + motADeviner);
}

}// fin main

}