Partage
  • Partager sur Facebook
  • Partager sur Twitter

Devinette, activité_1 plusieurs questions

Sujet résolu
    3 janvier 2018 à 21:07:56

    Bonsoir à tous, je fais actuellement l'activité 1 du cours JS du site, mon programme est bon mais j'aimerais y ajouter quelques détails au passage et j'ai besoin d'aide pour ça, tout d'abord voici l'énoncé de l'exercice : 

    "Je vous propose de mobiliser vos nouvelles connaissances pour réaliser un mini-jeu de devinette. L’objectif de cette activité est d’écrire dans un fichier devinette.js un programme qui fait deviner un nombre entre 1 et 100.

    Pour simplifier les choses, le programme initial qui vous est fourni permet de générer aléatoirement un nombre entre 1 et 100. Vous devez compléter ce programme pour que le joueur devine ce nombre en faisant des propositions successives. On considère que la saisie du joueur est toujours un nombre valide. À chaque tentative du joueur, le programme lui dit si le nombre qu’il a saisi est trop petit ou trop grand, jusqu’à ce que la solution soit devinéePour obtenir le maximum de points possibles, limitez le nombre de tentatives du joueur. Au-delà de 6 essais infructueux, la partie est perdue !"

    Voici mon programme :

    /* 
    Activité : jeu de devinette
    */
    
    // NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
    // COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
    
    console.log("Bienvenue dans ce jeu de devinette !");
    
    // Cette ligne génère aléatoirement un nombre entre 1 et 100
    var solution = Math.floor(Math.random() * 100) + 1;
    
    // Décommentez temporairement cette ligne pour mieux vérifier le programme
    // console.log("(La solution est " + solution + ")");
    
    // TODO : complétez le programme
    alert("Bonjour, vous allez devoir deviner un nombre entre 1 et 100 en 6 tentatives, c'est parti !");
    var nombre = Number(prompt("Entrez un nombre compris entre 1 et 100 :"));
    var nbTentatives = 1;
    while ((nombre !== solution) && (nbTentatives < 6)) {
        if (nombre < solution) {
            console.log("C'est plus, retentez votre chance !");
            nbTentatives++;
            console.log("Il vous reste " + nbTentatives + " tentatives.");
        } else if (nombre > solution) {
            console.log("C'est moins, retentez votre chance !");
            nbTentatives++;
            console.log("Il vous reste " + nbTentatives + " tentatives.");
        } else {
            console.log("Entrez une valeur correcte.");
        }
        var nombre = Number(prompt("Entrez un nombre compris entre 1 et 100 :"));
    }
    
    if (nombre === solution) {
        console.log("Bravo ! Vous avez trouvé la solution en " + nbTentatives + " essais.");
    } else {
        console.log("Dommage, vous avez perdu :(");
        console.log("La solution était : " + solution);
    }
    

    Comme vous pouvez le voir j'ai voulu rajouter quelques petites choses, si je m'en tient à la consigne de base le problème est réglé mais j'aimerais :

    - Pouvoir afficher le nombre de tentatives qu'il reste au joueur, j'ai voulu essayer mais je me suis vite rendu compte que la valeur nbTentatives ne pouvait pas afficher ça vu qu'elle affiche le nombre d'essais effectués.

    - Pouvoir faire recommencer la boucle si le joueur n'entre pas une valeur correcte, je pensais régler le problème avec mon else mais non.

    - Enfin j'aimerais pouvoir proposer au joueur de recommencer la partie après être arrivé au bout des 6 tentatives.

    Je ne compte pas envoyer ça pour l'exercice mais je préfère approfondir un peu de mon coté pour apprendre, merci à vous et bonne année !

    EDIT :

    Si quelqu'un pouvait également m'expliquer la formule pour générer le nombre aléatoire je lui en serait reconnaissant, c'est assez frustrant de ne pas comprendre ce qu'il y a dans notre programme.

    -
    Edité par MathisNazil 3 janvier 2018 à 21:15:12

    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2018 à 22:14:57

      Bonsoir,

      La formule pour generer un nombre aleatoire est la suivante: Math.random(), cette instruction va te renvoyer un nombre ALEATOIRE entre 0 et 1. Si tu veux un nombre entre 0 et 100 par exemple tu peux faire Math.random() * 100

      - Nombre de tentative qu'il reste: C'est tout simplement 6 - nbTentatives

      - Pour recommencer la partie, il suffit de mettre ton WHILE dans une fonction et que a la fin de cette fonction tu rappelle la fonction

      - 'Pouvoir faire recommencer la boucle si le joueur n'entre pas une valeur correcte, je pensais régler le problème avec mon else mais non.'

      Je n'ai pas tres bien compris ce que tu veux dire par la

      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
        3 janvier 2018 à 22:57:58

        Bonsoir, merci pour tes réponses.

        Je n'ai malheureusement pas encore vu les fonctions dans le cour et j'ai seulement survolé ça lors de quelques recherches mais je te remercie.

        Pour ce qui est de la troisième question je voudrais pouvoir indiquer à l'utilisateur que sa valeur est incorrect si il entre "n'importe quoi", un nombre au dessus de 100, un mot etc... Je pensais que mon else ferrait l'affaire pour ça mais non. 

        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2018 à 23:17:42

          Okay,

          Du coup tu peux mettre en premier lieux: if (nombre > 100 || isNaN(nombre)) { // Erreur !}

          isNaN est une fonction qui te retourne si ton nombre est valide ou pas

          • Partager sur Facebook
          • Partager sur Twitter
          Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
            4 janvier 2018 à 20:37:33

            Bonsoir, je me permet d'up le sujet car j'ai un question à propos d'une des solutions que tu m'as proposé, voici le "problème" :

            /*
            Activité : jeu de devinette
            */
            
            // NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
            // COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
            
            console.log("Bienvenue dans ce jeu de devinette !");
            
            // Cette ligne génère aléatoirement un nombre entre 1 et 100
            var solution = Math.floor(Math.random() * 100) + 1;
            
            // Décommentez temporairement cette ligne pour mieux vérifier le programme
            // console.log("(La solution est " + solution + ")");
            
            // TODO : complétez le programme
            alert("Bonjour, vous allez devoir deviner un nombre entre 1 et 100 en 6 tentatives, c'est parti !");
            var nombre = Number(prompt("Entrez un nombre compris entre 1 et 100 :"));
            var nbTentatives = 1;
            var essais = 6 - nbTentatives;
            while ((nombre !== solution) && (nbTentatives < 6)) {
                if (nombre < solution) {
                    console.log("C'est plus, retentez votre chance !");
                    nbTentatives++;
                    console.log("Il vous reste " + essais + " tentatives.");
                } else if (nombre > solution) {
                    console.log("C'est moins, retentez votre chance !");
                    nbTentatives++;
                    console.log("Il vous reste " + essais + " tentatives.");
                } else {
                    console.log("Entrez une valeur correcte.");
                }
                var nombre = Number(prompt("Entrez un nombre compris entre 1 et 100 :"));
            }
            
            if (nombre === solution) {
                console.log("Bravo ! Vous avez trouvé la solution en " + nbTentatives + " essais.");
            } else {
                console.log("Dommage, vous avez perdu :(");
                console.log("La solution était : " + solution);
            }
            

             Quand je teste le code la variable "essais" m'indique toujours 5, j'aimerais qu'elle évolue pour m'indiquer les tentatives restantes, je pensais que la solution était celle que j'ai mis en place mais apparemment non.

            EDIT : J'ai pu me faire aider en mp, merci à Stelyus.

            -
            Edité par MathisNazil 4 janvier 2018 à 21:21:51

            • Partager sur Facebook
            • Partager sur Twitter

            Devinette, activité_1 plusieurs questions

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown