Besoin d'aide (résolution d'un probleme sur un programme fini )

Besoin d'aide (résolution d'un probleme sur un programme fini ) - Java - Programmation

Marsh Posté le 12-11-2014 à 17:39:08    

Bonjour,
j'aurais besoin de votre aide pour un petit probleme...
Je dois rendre ce programme pour demain, il s'agit d'un pendu.
Voila le programme:
 
void main(){
//Preambule
 println("Bienvenue au jeu du pendu, le premier joueur doit choisir un mot" );
 println("!ATTENTION! Pour jouer il faut utiliser uniquement des lettres minuscules" );
 
//Joueur 1
 String mot = readString("Entrez le mot:" );
 int nblettre = readInteger("Combien de lettres comportent votre mot ?" );
 
 int tableau[] = new int[nblettre+1];
  for (int i=1; i<tableau.length;i++){
   tableau[i]= readChar ("Entrez la lettre " + i + ":" );
 }
 
//Joueur 2
 println("C'est au deuxieme joueur de deviner le mot. Bonne chance !" );
 boolean[] boo = new boolean[nblettre];  
 int co=0;  
 int vie=11;  
 while(vie > 0 ){  
  co=0;  
  String motecran = "Mot: ";  
   for(;nblettre!= co;){  
    if (boo[co]){  
     motecran = motecran +mot.charAt(co)+" ";  
}
    else{  
     motecran = motecran +"_ ";  
}  
   co++;  
 
}  
  println(motecran);  
  char lettre = readCharacter ("Entrez votre lettre :" );  
  String rep = ("Vous avez tapé " +lettre);  
  println (rep);  
  co=0;  
  int ci=nblettre;  
  while (ci != nblettre){  
   if (lettre == mot.charAt(co)) {  
    boo[ci]=true;  
}  
   else{ci=ci-1;  
}  
   ci++;  
}  
  if (ci==0){vie=vie-1;}  
  if (vie >1 ){
   println ("Il vous reste "+vie+" vies" );  
}  
  else{  
   println("Il vous reste "+vie+" vie" );  
}  
  boolean v= true;  
  co=0;  
  while(co!=nblettre){  
   if (boo[ci]==false){  
    v = false;  
}  
   ci++;  
}  
  if (v){ vie=-1;}  
}  
 
//Resultat
 if (vie == 0){  
  println ("MINCE ! Vous avez été pendu" );  
  println ("Il fallait trouver : "+mot);}  
 if (vie == -1){  
  println ("BIEN JOUE ! C'est gagné" );  
  println (mot + (" était bien la solution" ));
  }  
}
 
 
 
 
Quand je rentre un nombre de lettre X, le programme se déroule de la facon suivante:
Je peux rentrer mon mot, le nombre de lettre X et les lettres dans l'ordre.
Puis viens le tour du joueur 2, je rentre une lettre appuie sur entré et voila;
 
Compilation réussie !
Bienvenue au jeu du pendu, le premier joueur doit choisir un mot
!ATTENTION! Pour jouer il faut utiliser uniquement des lettres minuscules
C'est au deuxieme joueur de deviner le mot. Bonne chance !
Mot: _ _ _ _ _ _ _  
Vous avez tapé a
Il vous reste 11 vies
 
-------------------
Erreur lors de l'exécution de la proglet
java.lang.ArrayIndexOutOfBoundsException: X ( le nombre de lettre )
.main(JvsToJavaTranslated22.java:57)
.run(JvsToJavaTranslated22.java:1)
 
-------------------
 
Il faut savoir que le programme marchait hier. Je n'ai apporté que de petites modifs,.. je n'en connais pas la cause.
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 12-11-2014 à 17:39:08   

Reply

Marsh Posté le 12-11-2014 à 18:54:04    

J'aurais vraiment besoin d'aide... Je comprends pas d'où viens le probleme

Reply

Marsh Posté le 13-11-2014 à 00:44:48    

co=0;  
while(co!=nblettre){  
 if (boo[ci]==false){  
  v = false;  
 }  
 ci++;  
}  

Boucle infinie car co ne change jamais, en revanche ci augmente de 1 a chaque passage donc aura rapidement depasse la taille de boo.

 

PS: "votre mot" c'est singulier aussi, merci.


Message édité par lasnoufle le 13-11-2014 à 00:47:20

---------------
C'était vraiment très intéressant.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed