Etablir un projet informatique depuis eclipse en langage Java

Résolu/Fermé
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013 - 28 févr. 2013 à 09:56
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013 - 28 févr. 2013 à 19:46
Bonjour,



Je dois réaliser un jeu de pendu en langage java ( que moi je fais depuis éclipse) qui se joue à 1 joueur. Le mot à deviner doit être tiré au hasard dans une liste de mot définie au préalable. Le joueur ne doit voir apparaître que des tirets où chaque tiret remplace les lettres du mot à deviner. Quand le joueur trouve une lettre, le tiret correspondant doit être remplacée par cette dernière. Si le mot est entièrement trouvé ( dans mon code cette condition est remplie si il n'y a plus de tiret dans la chaîne de caractère que voit le joueur) il s'affiche alors pour le joueur "Vous avez gagné!". Si le joueur a fait 10 erreurs la partie est perdu et il s'affiche le mot qui était à deviner.
Dans mon code mon interface est sensée pouvoir diriger le joueur vers une partie 2 joueurs mais elle n'est même pas commencée par manque de temps.
J'ai mis en pièce jointe la dernière version de mon projet.import java.io.IOException;
import java.util.Random;


public class partie_principale {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("Bienvenue dans le jeu du pendu!");

int y = 0;
while (y == 0){

System.out.println("*Appuyez sur 1 pour jouer à un joueur.");
System.out.println("*Appuyez sur 2 pour jouer à deux joueurs.");
System.out.println( "*Appuyez sur 3 pour acceder aux crédits.");
System.out.println("*Appuyez sur 4 pour accedez aux instructions de jeu.");
int x = Isn.readInt();
if (x == 1) {
y = 1;


// partie J1

}
if (x == 2) {

// partie J2
System.out.println("Joueur 2, tapez un mot.");
String MotAtrouver = Isn.readString();

}
if (x == 3) {

System.out.println("Jeu du pendu. dévellopé par Selim Troniou.2012-2013");
}
if (x == 4) {

System.out.println("Ce jeu se joue a l'aide du clavier. Le but étant de trouver le mot caché, en proposant des lettres. Mais attention, au bout de la 10eme erreur, vous perdez.");}
if (x >4){
System.out.println("touche incorrecte");}

}
//partie commune J1 et J2.
System.out.println("Joueur 1, entrez une lettre.");




//Partie commune

int nb_erreurs;
boolean mot_fini = false ;
boolean lettre_saisie = false ;
nb_erreurs = 0 ;
int i;
//Partie J1
y = 1; {
String[] tabMots = {"feuille","printemps","enfant","chat","impliquer"} ; // on établit les mots à deviner
Random rand=new Random(); //Déclaration de l'objet rand, qui servira a utiliser des nombre aléatoire.
int nbAleatoire=rand.nextInt(tabMots.length); //Cette variable contient un nombre compris entre 0 et la valeur de la taille du tableau des mots a chercher. motàdeviner=tabMots[nbAleatoire]; //On insère dans la variable motAdeviner le mots qui a été tiré au hasard
String mot_a_deviner=tabMots[nbAleatoire];
char mot_cache[]; //On créer un tableau de caractère de même taille que la longueur du mot a chercher
mot_cache=new char [mot_a_deviner.length()];
for (i=0;i<mot_cache.length;i++){
mot_cache[i]='-'; //Pour le reste entre on insère des tirets
System.out.print(mot_cache[i]); //Affichage des caractère
}
while (mot_fini == false) {
System.out.println();
int lettre = System.in.read(); // on lit une lettre entrée par le joueur (vérifié si il faut bien mettre int)

for (i=0; i< mot_a_deviner.length();i++) {

if (lettre == mot_a_deviner.charAt(i)); {
lettre_saisie = true;
mot_cache[i] = (char) lettre; // on remplace le tiret correspondant par la lettre trouvée
}

}
if ( lettre_saisie == false ) {
nb_erreurs = nb_erreurs + 1 ;
System.out.println("Vous avez fait"+ nb_erreurs +"erreurs");
System.out.println(mot_cache[i]);
if (nb_erreurs >= 10) {
System.out.println( "Vous avez perdu! Le mot à trouver était:" + mot_a_deviner); // Le joueur a perdu, on lui donne le mot qu'il devait deviner
break;
}
}
lettre_saisie=false;

//On vérifie si le mot est entièrement trouvé


mot_fini=true;
for( int i1 = 0; i1< mot_a_deviner.length() ; i1++){
if (mot_cache[i1] == '-') {
mot_fini = false;
}
}
if (mot_fini == true){
System.out.println("Vous avez gagné");
}
System.out.print(mot_cache);
}

}


}


}

Je bloque et demande du secours pour m 'aider à avancer .Au secours ,où est l 'erreur !
Merci de l 'aide que vous pouvez m 'apporter
Cordialemnt

A voir également:

2 réponses

salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
28 févr. 2013 à 10:03
T'as une erreur de compilation ou juste d'algo ? Si c'est de compilation dis ce qui s'affiche sur ton compilateur.
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
28 févr. 2013 à 10:07
"motàdeviner=tabMots[nbAleatoire]; "
Je sais même pas comment il peut t'accepter un accent sur le nom d'une variable
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 11:06
Mon compilateur n'indique aucune erreur et je ne trouve pas où est mon erreur d'algo. En ce qui concerne l'accent il se trouve dans un commentaire et non dans l'algo ( c'était l'ancien nom de ma variable que j'ai du changer pour cette raison)
vois tu ce que je dois changer, merci++
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
28 févr. 2013 à 11:32
Ok donc, qu'est-ce que ça t'affiche ? Tu peux choisir parmis ton menu ? Tu arrives à donner une lettre ? Ca compte une erreur quand la lettre n'est pas dans le mot ? Ca l'affiche quand elle l'est ?
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 11:53
Quand je lance le programme dans la console ça m'affiche l'interface( qui fonctionne). Je lance la partie 1 joueur ( car la 2 n'est pas créée). Ensuite le mot mot est tiré correctement au hasard dans ma liste de mot. La console affiche les tirets qui remplacent les lettres mais lorsque ensuite je tape une lettre elle est automatiquement comptée comme juste et tous les tirets sont remplacés par cette lettre. Comme j'ai défini que la partie était gagnée quand tous les tirets étaient remplacés la console m'indique que j'ai gagné la partie.
Je pense que le problème se trouve au niveau de ma boucle while mais malgré toutes mes tentatives je n'arrive pas à le résoudre
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 14:03
Au niveau de "Scanner sc = new Scanner(System.in);" ça me marque "Resource leak: 'sc' is never closed"
Et quand j'execute le programme j'ai le même problème que tout à l'heure.
Pas de soucis je te remercie déjà de m'aider.
je m'excuse d'avoir mis du temps à répondre mais je n'avais pas vu ta réponse: la page ne s'était pas mise à jour
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
28 févr. 2013 à 12:23
Bon essaye de faire ça :

1) import java.util.Scanner;

2)Scanner scan = new Scanner (System.in); //A mettre avec l'initailisation des variables.

3) Remplace "int lettre = System.in.read(); " par :

System.out.println("Saisissez une lettre :");
Scanner sc = new Scanner(System.in);String str = sc.nextLine();
char lettre =str.charAt(0);

Comme ca tu récupère un caractère et non un entier ça simplifie.

4) Remplace "mot_cache[i] = (char) lettre;" par :

mot_cache[i] = lettre;


Et dis moi ce que ça fait. (Désolé au passage mais j'ai pas de compilateur JAVA sous la main).
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 14:11
J'ai également une autre remarque au niveau de "Scanner scan = new Scanner (System.in);" .
ça me marque "Resource leak: 'scan' is never closed" et "The value of the local variable scan is not used"
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 14:19
ça me fait toujours la même chose
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 14:29
Après je n'ai plus qu'une remarque "resource leak:'scan' is never closed"
0
salyks Messages postés 139 Date d'inscription mardi 26 février 2013 Statut Membre Dernière intervention 5 mars 2014 11
28 févr. 2013 à 14:38
ok pour résoudre ça met à la fin de ton code :
scan.close();

Mais normalement tu peux quand même exécuter ton code vu que c'est juste un warning la compilation s'est effectué.
0
kathleen21 Messages postés 13 Date d'inscription dimanche 29 juillet 2012 Statut Membre Dernière intervention 28 février 2013
28 févr. 2013 à 14:45
Mon programme s'execute mais le problème est le même que tout à l'heure quand je tape une lettre tous les tirets sont remplacés par cette lettre ce qui fait que j'ai automatiquement gagné
0