Etablir un projet informatique depuis eclipse en langage Java

[Résolu/Fermé]
Signaler
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013
-
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013
-
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

2 réponses

Messages postés
139
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
5 mars 2014
11
T'as une erreur de compilation ou juste d'algo ? Si c'est de compilation dis ce qui s'affiche sur ton compilateur.
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013

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++
Messages postés
139
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
5 mars 2014
11
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 ?
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013

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
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013

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
Messages postés
139
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
5 mars 2014
11
normal c'est de ma faute, je t'ai fait mettre 2 fois la même chose, supprime la ligne avec Scanner sc, et remplace sc.nextLine(); par scan.nextLine();
Messages postés
139
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
5 mars 2014
11
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).
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013

Pourtant j'ai tapé ce que tu m'as dis et il m'as mis les bonnes valeurs booléennes au bon endroit; je vois vraiment pas ce qui bloque. Tu n'as pas eclipse car je suis sur que tu pourrai trouver rapidement le problème, tu as vraiment l'air de t'y connaitre
Messages postés
139
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
5 mars 2014
11
Je te donnerais bien une solution toute faite, mais ça va pas t'aider de pas le faire par tes propres moyens
Messages postés
139
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
5 mars 2014
11
évident, je sais pas comment je l'ai pas vu plus tôt. Vire le ; après ton if (lettre == mot_a_deviner.charAt(i));
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013

ça y est ça marche. Je te remercie grandement pour le le temps que tu as passé à m'aider. je me débrouillerai pour rajouter quelques options.
Encore merci :)
Messages postés
13
Date d'inscription
dimanche 29 juillet 2012
Statut
Membre
Dernière intervention
28 février 2013

Tu es super ,et m 'a enlevé un belle épine du pied .Merci encore et peut être à une autre fois .
Cordialement
Kathleen21