IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

jeu du pendu - débutant JAVA


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 17
    Points
    17
    Par défaut jeu du pendu - débutant JAVA
    Bonjour ,

    Voici l'énoncé d'un jeu du pendu : un joueur doit deviner un mot choisi par un autre joueur. En début de partie, le nombre de lettres est donné sous forme d'une suite de tirets, chaque tiret représentant une des lettres du mots. Par exemple ------- représentera un mot de 7 lettres. Ensuite à chaque tour de jeu, le joueur qui devine propose une lettre. Si la lettre apparaît une ou plusieurs fois dans le mot, le joueur qui a choisi le mot écrit cette lettre à sa bonne place, à la place du tiret. Par exemple, -E--E-.

    Note = Pour écrire ce programme, on doit utiliser une méthode qui s'appelle MOOC.motAuSort() qui renvoie un mot pris au hasard dans une liste de quelques dizaines de mots de plus de 7 lettres. Cette méthode renvoie le mot dans un tableau de 14 caractères, avec des espaces dans les dernières cases si le mot choisi fait moins de 14 caractères.

    Avant de rédiger mon programme, j'ai fais une liste des différentes étapes :
    1. on tire un mot au sort
    2. ce mot sera placé dans un tableau
    3. on transforme ce mot en "tirets"
    4. on l'affiche à l'utilisateur
    5. on demande à l'utilisateur de deviner une lettre
    6. il choisit une lettre et le programme va parcourir le mot pour essayer de trouver la lettre en question
    7. s'il la trouve, il l'affiche dans son emplacement à la place du tiret
    8. s'il ne la trouve pas, il continue de chercher
    9. dès que toutes les lettres ont été trouvé, on affiche : "vous avez gagné"

    J'ai pu atteindre l'étape 5 qui a priori marche. Mais après, j'ai essayé de réaliser les étapes suivantes mais sans réel succès. En fait, je demande la lettre, je lis la réponse. Cependant, les lettres ne sont pas remplacés dans le mot avec les tirets.

    Pourriez-vous m'aider s'il vous plaît ?

    Nom : Capture d’écran 2018-11-22 à 12.49.05.png
Affichages : 7822
Taille : 143,8 Ko

  2. #2
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par L.una Voir le message
    Bonjour ,

    Voici l'énoncé d'un jeu du pendu : un joueur doit deviner un mot choisi par un autre joueur. En début de partie, le nombre de lettres est donné sous forme d'une suite de tirets, chaque tiret représentant une des lettres du mots. Par exemple ------- représentera un mot de 7 lettres. Ensuite à chaque tour de jeu, le joueur qui devine propose une lettre. Si la lettre apparaît une ou plusieurs fois dans le mot, le joueur qui a choisi le mot écrit cette lettre à sa bonne place, à la place du tiret. Par exemple, -E--E-.

    Note = Pour écrire ce programme, on doit utiliser une méthode qui s'appelle MOOC.motAuSort() qui renvoie un mot pris au hasard dans une liste de quelques dizaines de mots de plus de 7 lettres. Cette méthode renvoie le mot dans un tableau de 14 caractères, avec des espaces dans les dernières cases si le mot choisi fait moins de 14 caractères.

    Avant de rédiger mon programme, j'ai fais une liste des différentes étapes :
    1. on tire un mot au sort
    2. ce mot sera placé dans un tableau
    3. on transforme ce mot en "tirets"
    4. on l'affiche à l'utilisateur
    5. on demande à l'utilisateur de deviner une lettre
    6. il choisit une lettre et le programme va parcourir le mot pour essayer de trouver la lettre en question
    7. s'il la trouve, il l'affiche dans son emplacement à la place du tiret
    8. s'il ne la trouve pas, il continue de chercher
    9. dès que toutes les lettres ont été trouvé, on affiche : "vous avez gagné"

    J'ai pu atteindre l'étape 5 qui a priori marche. Mais après, j'ai essayé de réaliser les étapes suivantes mais sans réel succès. En fait, je demande la lettre, je lis la réponse. Cependant, les lettres ne sont pas remplacés dans le mot avec les tirets.

    Pourriez-vous m'aider s'il vous plaît ?

    Nom : Capture d’écran 2018-11-22 à 12.49.05.png
Affichages : 7822
Taille : 143,8 Ko
    Hello,

    Je pense qu'en relisant ton code, tu peux te rendre compte de ce qui ne va pas , Il te manque une boucle qui demande une nouvelle lettre, une fois que la vérification de la lettre dans le mot est faites.
    Ta première boucle for, je ne comprends pas... car elle n'est faite qu'une seule fois.

    Essaie de découper en méthode, une méthode qui fait la vérification si la lettre est dans le mot par exemple.

    Et au lieu de coller une image, copie colle ton code ca sera beaucoup plus simple pour t'aider;

    Merci,
    Jérémy

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 17
    Points
    17
    Par défaut re
    Merci de votre réponse.

    Ma première boucle for est faite qu'une fois parce qu'on nous dit de tirer un mot au sort et le tirage au sort ne se fait qu'une fois non ?

    J'avoue que je suis un peu perdu, j'ai écris mon code mais certaine zone reste floue.
    Je vous explique ce que je pense avoir fait, corrigez moi quand ça ne va pas s'il vous plait :
    - Je tire un mot au sort que va être placé dans un tableau "unmot" de 14 cases composés également de cases "vides"
    - Je crée un deuxième tableau dans lequel je vais stocker les lettres de mon mot et qui aura la longueur de mon mot
    - dans ma deuxième boucle for : je vais transformer les lettres de mon mot en tirets, en ne prenant pas en compte les espaces (numlet correspond au numéro de ma case dans le tableau unmot, je l'initialise à 0, numlet est inférieur à unmot.length car car le tableau commence à zéro et pas à 1 (?) et à chaque début de boucle je passe au numéro de case suivant donc numlet = numlet+1.
    - j'affiche le mot avec les tirets au joueur
    - je lui demande la lettre
    - je lis sa réponse
    - la lettre qu'il m'aura donné sera inséré dans une variable char qu'on appelle var
    - pour la troisième boucle for : je vais aller dans le tableau "lettres" et si la lettre dans la case qui correspond au numéro i correspond à var alors j'ai trouvé une lettre sinon je passe à la suivante

    Bon je vois clairement qu'il manque des choses et que mon code n'est pas juste, mais je pense que je n'ai pas bien compris le système des emplacements libre.
    Pouvez-vous m'éclairer un peu plus s'il vous plaît ?

    désolé, en fait j'utilise Doppio qui s'utilise en ligne et on ne peut pas copier directement le code
    Images attachées Images attachées  

  4. #4
    Membre habitué
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 80
    Points : 176
    Points
    176
    Par défaut
    Bonjour,

    Le début est bon, mais ca se corse après...

    Ta boucle qui va checker dans le tableau lettre... relis la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for(int num = 0; num <1;num = num + 1){
                if(lettres[num]==var){
                    lettretrouvee = true;
                }
                if (!lettretrouvee){
                    lettres[nb] = var;
                    nb =  nb+1
                }
            }
    tu fais une seule fois ta bouble et si tu trouves pas la lettre, tu remplaces la lettre dans lettres par la lettre que la personne a saisie...
    Ca n'a pas de sens non? Si il a pas trouvé la lettre tu dois continuer sur les autres lettres du tableau lettres.
    Donc les conditions dans ton for ne sont pas bonne, au lieu de num <1, tu dois avoir num < lettres.lenght.

    Ensuite essaie de réfléchir à ce que devrait faire cette boucle, si on trouve la lettre on fait quoi? si on ne trouve pas on fait quoi?

    PS : Change le nom de tes variables!

    Jérémy.

  5. #5
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut


    Il y a aussi un problème avec tes tableau lettres et unmot.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char []unmot = MOOC.motAuSort();
    char []lettres = new char[unmot.length]
     
    for(int numlet=0; numlet<numlength; numlet++) {
        if(unmot[numlet]!=' ') {
            unmot[numlet] = '-';
        }
    }
    Ton tableau lettresest initialisé avec une longueur égale à celle de unmot, mais est vide.
    Puis tu écrase le contenu de unmotpour remplacer les lettres par des tirets, mais tu n'as garder ton mot nulle part.
    Tu ne risque donc pas de trouver si une lettre est présente dans le mot ou non.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 17
    Points : 17
    Points
    17
    Par défaut re
    Merci de vos réponses

    alors j'ai essayé d'améliorer, j'ai un peu de mal avec cette boucle. J'ai mis que : si dans le numéro de case de mon tableau unmot je trouve la lettre recherché alors dans mon tableau lettres qui a priori vide, je vais placer cette lettre au même numéro de case.
    Sinon si je ne trouve pas la lettre, je met un tiret à la place du vide.
    Pour le changement de mes variables, je les change toutes ?

    Merci et désolé si je suis embêtante !

    @Drowan : est-ce que je dois créer un tableau supplémentaire et stocker le mot dedans ?
    Images attachées Images attachées  

  7. #7
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Un petit coup de pouce.
    Salut,
    Moi aussi je débute et je bute aussi sur cet exercice. Si ça peut t’aider, j’ai constaté dans ton dernier code à la (ligne 7) la variable nb qui n’est pas utilisée dans la suite de ton programme. Ainsi que la variable lettretrouve au niveau du boolean de la ligne 17 et 20.
    J’espère que tu puisses résoudre ta suite et voir tes avancées obtenues.Nom : oui.jpg
Affichages : 4572
Taille : 117,6 Ko

  8. #8
    Membre éprouvé Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Points : 1 014
    Points
    1 014
    Par défaut
    An fait j'ai l'impression que tu ne sais pas trop ce que tu veux faire de tes tableaux.
    Et donc nous non plus on sait pas trop.

    A quoi sert ton tableau unMot :
    - A stocker le mot obtenu aléatoirement ?
    - A être affiché ?
    - a être comparé ? a quoi ?
    Mêmes questions pour tes autres tableaux.




    Pour moi tu as besoin de 3 éléments.

    Un premier élément qui va stocker le mot obtenu aléatoirement. Cet élément va rester inchangé. Il va te permettre de chercher si la lettre proposé par l'utilisateur se trouve dans le mot. Et si c'est le cas, dans quelle position.
    C'est également cet élément qui va permettre à ton deuxième élément de savoir le nombre de tiret.

    Ton deuxième élément et celui qui va être affiché à l'utilisateur. Il doit contenir au début un nombre de tiret correspondant au nombre de lettre dans le premier élément. C'est dans cet élément que tu vas remplacer les tirets par des lettres lorsque la lettre proposé par l'utilisateur est trouvé dans l'élément 1. Tu utilise l'index trouvé dans l'élément 1 pour savoir quel tiret remplacer dans l'élément 2.

    Ton troisième élément est un simple tableau qui va te permettre de stocker les lettres déjà proposé par le joueur. Ainsi si la lettre proposé par le joueur se trouve déjà dans ce tableau, il ne faut rien faire. Et en comptant le nombre d'élément dans ce tableau, tu vas savoir où en est le joueur et quand est-ce qu'il a perdu.

Discussions similaires

  1. Code source d'un jeu de pendu java
    Par s2a07 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 03/05/2018, 13h26
  2. Jeu du pendu en java
    Par toonpax dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 20/03/2010, 13h58
  3. [Débutant][Java] Web Service
    Par ArseNic dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/11/2005, 11h09
  4. [Débutant] java.lang.object
    Par bonnefr dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2004, 14h54
  5. [débutante][java]connection internet PPC\PC de bureau
    Par Emma20 dans le forum Développement
    Réponses: 2
    Dernier message: 19/05/2004, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo