Partage
  • Partager sur Facebook
  • Partager sur Twitter

Attendre un peu avant de refaire un tour de boucle

Sujet résolu
    21 octobre 2021 à 5:48:51

    Bonjour

    J'essaie de faire un mini jeu où on doit lancer des dé pour jouer. Comme il peut arriver qu'aucun déplacement ne soit possible j'ai fait une boucle pour relancer les dés à nouveau mais je voudrais que l'utilisateur ait le temps de constater qu'il ne peut pas jouer au lieu de passer direct à la suite.

    J'ai une fonction comme ça:

    throwDices() {
    	var numberOfMoves = 0;
    	
    	do {
    		numberOfMoves = 0;
    		numberOfMoves += setAllPulls(1);
    		numberOfMoves += setAllPulls(2);	
    
    	//	var isLoopBlocked = true;
    	//	setTimeout(function() {
    	//		isLoopBlocked = false;
    	//	}, 2000);
    	//	while (isLoopBlocked) {}
    
    	} while (numberOfMoves == 0);
    }

    Avec setAllPulls() qui modifie des variables globales et qui retourne le nombre de déplacements possibles. J'ai essayé comme ça aussi:

    throwDices() { setTimeout(function() {
    	var numberOfMoves = 0;
    	
    	do {
    		numberOfMoves = 0;
    		numberOfMoves += setAllPulls(1);
    		numberOfMoves += setAllPulls(2);	
    
    	} while (numberOfMoves == 0);
    }, 2000);}


    Mais je ne trouve pas de technique correcte :(

    Comme c'est un jeu on ne peut pas dire qu'il soit urgent que j'aie une réponse mais je suis quand même curieux. Avez-vous une idée?

    • Partager sur Facebook
    • Partager sur Twitter
      21 octobre 2021 à 9:17:17

      Salut,

      Un exemple de méthode asynchrone (tu peux tester dans une console) :

      // Tu définis la fonction sleep :
      const sleep = t => new Promise(res => setTimeout(res, t));
      // Tu l'utilises dans une fonction asynchrone de cette façon :
      !async function() {
          await sleep(3000);
          console.log(true);
      }();

      -
      Edité par BrainError 21 octobre 2021 à 9:17:52

      • Partager sur Facebook
      • Partager sur Twitter
        21 octobre 2021 à 14:57:30

        J'ai mis ma boucle do while à l'intérieur de la fonction que tu m'as donné et ça a marché tout de suite! Merci :D
        • Partager sur Facebook
        • Partager sur Twitter
          21 octobre 2021 à 23:02:28

          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

          Attendre un peu avant de refaire un tour de boucle

          × 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