Aide débutant jeu du pendu

juancho2786 Messages postés 39 Date d'inscription mardi 5 juillet 2005 Statut Membre Dernière intervention 29 octobre 2008 - 1 avril 2006 à 23:21
cs_nomad56 Messages postés 54 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 avril 2006 - 2 avril 2006 à 03:20
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);
}
}
}

2 réponses

cs_nomad56 Messages postés 54 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 avril 2006 1
2 avril 2006 à 03:20
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 --->>
0
cs_nomad56 Messages postés 54 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 avril 2006 1
2 avril 2006 à 03:20
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

}
0
Rejoignez-nous