Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de while

Sujet résolu
    5 juillet 2019 à 11:21:05

    Voila, je suis en train de faire un script de "jeu" textuel en javascript, quelque chose de simple. étant un novice, j'ai pas encore tout les réflexe pour régler mes tout mes problèmes seuls ^^'

    Mon problèmes actuel est que j'ai fait une boucle qui s’exécute a l'infinie... Et je sais a peu près pourquoi mais sa ne résous pas mon problème.

    La boucle doit simuler le voyage du joueur, en engendrant des rencontre hostile ou non en fonction d'un chiffre aléatoire. Et le combat est incule dans le while, mais je n'arrive pas dutout a les utiliser et la boucle tourne encore et encore... 

    Vous pourriez m'aider ? :$

    function cb1() {
    //uPos est la connaissance ou non de sa destination
        if (uPos == true) {
            tour = 1;
        } else {
            tour = 2;
        };
        console.log(`${tour}`)
        while (tour != 0) {
            rencontre = Math.round(Math.random() * (4 - 1)) + 1;
            console.log(`${rencontre}`);
            if (rencontre == 1) {
                $('.nar').html(`Vous traverser la zone de forêt sans problème`);
            };
            if (rencontre == 2) {
                $('.nar').html(`En marchant dans la forêt, vous vous faites surprendre par un bandit, un potentiel éclaireur d'Uzika`);
                $('#att').show().click(function () {
                    player.attaquer(bandit1);
                    bandit1.attaquer(player);
                    if (bandit1.sante == 0) {
                        $('#att').hide().attr("value", "");
                    };
                    descP(player);
                });
            };
            if (rencontre == 3) {
                $('.nar').html(`En marchant dans la forêt, vous vous faites surprendre par un gobelin`);
                $('#att').show().click(function () {
                    player.attaquer(gob1);
                    gob1.attaquer(player);
                    if (gob1.sante == 0) {
                        $('#att').hide().attr("value", "");
                    };
                    descP(player);
                });
            };
            $('#suiv').show().click(function () {
                tour--;
                $('#suiv').hide();
            });
        };
    };
    

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2019 à 14:41:31

      Salut, 

      Pourquoi tu veux faire un while ?

      Pourquoi pas faire une fonction play(), que tu appelle récursivement, à chaque fois que tu en à besoin ?

      play() {
      
          // Ta logique
      
          // Une fois le tour de jeu terminé
          if(player.isAlive())
          {
             // si le player est vivant le jeu continue (ou s'il a suffisament de tours, peut-importe)
             play()
          }
      }
      
      // On lance le jeu une première fois
      play()

      les while sont à éviter, si tu connais le nombre d'itérations à l'avance, utilise un for.

      si tu ne connais pas à l'avance le nombre d'itérations, vaut mieux utiliser une fonction récursive, c'est le même résultat qu'un while, mais tu contrôle beaucoup mieux la manière dont tu relance à chaque tour le script. Si tu ne fait rien, le script ne se relancera pas tout seul, à l'inverse du while.

      -
      Edité par lk77 5 juillet 2019 à 14:47:01

      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2019 à 11:37:14

        Effectivement c'est plus simple, je pense pouvoir gérer avec sa. Merci beaucoup
        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2019 à 12:13:29

          Bonjour,

          Sujet résolu

          Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Problème de while

          × 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