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

JavaScript Discussion :

Condition de sortie de boucle.


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    etudiant developpeur web
    Inscrit en
    Février 2018
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : etudiant developpeur web

    Informations forums :
    Inscription : Février 2018
    Messages : 99
    Par défaut Condition de sortie de boucle.
    Je reviens encore avec mon jeu de hasard, j'ai du refaire tout, j'étais hors sujet.... mais petit à petit, je progresse.
    Au démarrage de ma page, je sollicite l'utilisateur pour un nombre de coups maximums et j'incrémente un compteur à chaque proposition. Le compteur augmente bien mais la sortie de boucle ne se réalise pas quand le compteur dépasse le nombre de tentatives maximum. Pour le reste, tout semble fonctionner même si l'alerte vous avez perdu s'affiche après l'alerte vous avez gagné mais si déjà je pouvais arrêter la boucle au bon moment ... un problème à la fois.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    	<meta name="TITLE" content="J'apprends le JavaScript ):"/>
    	<title>Je débute en javaScript ;)</title>
    	<!--link href="styles.css" rel="stylesheet" type="text/css"/-->
    	<script type="text/javascript" src="fichier_externe2.js"></script>
     
    </head>
    <body>
    	<div id="wrapper">
    		<header>
    			<h1>Le JavaScript en s'amusant ... </h1>
    				<form name="saisie" onsubmit="return Jouer()" method="post">
      					<input type="text"  name="user_Number" placeholder="Votre entrée ..." />
    					<input type="submit" value="OK" />
     
    				</form>
    		</header>
    		<main>
     
     
    		</main>
    	</div>
    </body>
    </html>

    fichier java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    var nb_Coup = prompt("Merci de vouloir indiquer le nombre de tentatives maximales :", "Nombres de tentatives");
    var compteur = 0;
    var numberToFind = Math.floor(Math.random() * 101);
     
     
    function Jouer() {
        console.log(numberToFind);
        console.log(nb_Coup + " tentatives max");
     
        var user_Number = document.forms["saisie"]["user_Number"].value;
     
        do {
            compteur++;
            console.log(compteur);
            if (user_Number !== "") {
                if (isNaN(user_Number)) {
                    alert("Ce n'est pas un un nombre !");
                    return false;
                }
            } else {
                alert("Ce champ doit être renseigné");
                return false;
            }
     
            if (user_Number < numberToFind) {
                alert("le nombre est trop petit");
                return false;
            } else if (user_Number > numberToFind) {
                alert("Votre nombre est trop grand");
                return false;
            } else {
                alert("Bravo ! Vous avez gagné :)");
            }
     
        }
        while (nb_Coup <= compteur);
        // alert("Vous avez perdu !");
     
     
    }
    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Ca ne fonctionne pas parce que conceptuellement parlant ça ne peut pas fonctionner.

    En effet tu fais une boucle pour qui traite l'ensemble des essais pour une tentative alors qu'il ne faut faire qu'une seule comparaison pour chaque tentative. Bref ta boucle ne sert à rien.

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <!DOCTYPE html>
    <html lang="fr">
    <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <meta name="TITLE" content="J'apprends le JavaScript ):"/>
     <title>Je débute en javaScript ;)</title>
     <!--link href="styles.css" rel="stylesheet" type="text/css"/--> <script>
      var nb_Coup = prompt("Merci de vouloir indiquer le nombre de tentatives maximales :", "Nombres de tentatives");
      var compteur = 0;
      var numberToFind = Math.floor(Math.random() * 101);
       
      function Jouer() {
       console.log(numberToFind);
       console.log(nb_Coup + " tentatives max");
       
       var user_Number = document.forms["saisie"]["user_Number"].value;
       
       compteur++;
       console.log(compteur);
       if (user_Number !== "") {
        if (isNaN(user_Number)) {
         alert("Ce n'est pas un un nombre !");
         return false;
        }
       } else {
        alert("Ce champ doit être renseigné");
        return false;
       }
       
       if (compteur >= nb_Coup)
       {
        alert("perdu !!! le nombre à trouver était "+numberToFind);
        return true;
       }
       
       document.getElementById('coups').innerHTML = "Reste : "+(nb_Coup-compteur);
       
       if (user_Number < numberToFind) {
        alert("le nombre est trop petit");
        return false;
       } else if (user_Number > numberToFind) {
        alert("Votre nombre est trop grand");
        return false;
       } else {
        alert("Bravo ! Vous avez gagné :)");
        return true;
       }
       
      }
     </script>
     
    </head>
    <body>
     <div id="wrapper">
      <header>
       <h1>Le JavaScript en s'amusant ... </h1>
        <form name="saisie" onsubmit="return Jouer()" method="post">
           <input type="text"  name="user_Number" placeholder="Votre entrée ..." />
         <input type="submit" value="OK" />
        </form>
        <div id="coups"></div>
      </header>
      <main>
     
     
      </main>
     </div>
     <script>
     document.getElementById('coups').innerHTML = "Reste : "+(nb_Coup-compteur);
     </script>
    </body>
    </html>

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bref ta boucle ne sert à rien.
    jpense que sa boucle sert bien. il s'est juste planté il incrémente compteur, mais compare qq <= compteur qui sera tjs vrai tant que compteur augmente...

    1) la comparaison à faire étant (en fait) compteur <= nb_coup

    @ccacc02
    ps: c'est bien d'indenter ton code, je suis pas intervenu sur ton autre discussion parce que ca faisait saigner les yeux

    2) tes tests de sortie de boucle sont pas bon. Tu veux sortir de la boucle SI tu as trouvé le résultat...sinon tu restes dans ta boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        if (user_Number < numberToFind) {
            alert("le nombre est trop petit");
            //return false;
        } else if (user_Number > numberToFind) {
            alert("Votre nombre est trop grand");
            //return false;
        } else {
            alert("Bravo ! Vous avez gagné :)");
            return true //<--------
        }

  4. #4
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Citation Envoyé par galerien69 Voir le message
    jpense que sa boucle sert bien. il s'est juste planté il incrémente compteur, mais compare qq <= compteur qui sera tjs vrai tant que compteur augmente...
    La boucle ne sert à rien puisqu'elle compare n fois la même valeur. De facto une seule fois suffit !

    De plus le code que j'ai posté fonctionne (du moins je l'espère) sans la moindre boucle. C'est un indice. Non ?

  5. #5
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Si, la boucle ne sert à rien.

    le nombre de coup est incrémenté à chaque fois que l'utilisateur "propose" sa réponse.

  6. #6
    Invité
    Invité(e)
    Par défaut
    La boucle ne sert à rien puisqu'elle compare n fois la même valeur. De facto une seule fois suffit !
    le jeu que ccacc02 c'est le truc de base que t'apprends au début:
    tu donnes 7 chances (ou plus) pour trouver un nombre, soit tu le trouves et c'est bon, soit tu le trouves pas et t'as perdu.
    ici, la boucle, c'est le nombre de chances que tu as.

    alors oui tu peux faire une récursive si çà te plait, (ou passer par le dom), mais je persiste à dire que le but de l'exercice c'est de faire une boucle


    De plus le code que j'ai posté fonctionne (du moins je l'espère) sans la moindre boucle. C'est un indice. Non ?
    concernant ton code, c'est l'approche que j'aime pas trop (çà n'engage que moi). Quand quelqu'un poste une question, je trouve pas top de lui dire: ce que tas fait c'est usuelle: fais autrement. (éventuellement si çà peut pas marcher c'est différent). Je trouve bien plus pertinent de lui donner la réponse précise à la question qu'il pose:
    "mais la sortie de boucle ne se réalise pas quand le compteur dépasse le nombre"
    et en l'occurrence c'est parce qu'il s'est planté dans l'ordre des opérandes

    la après tu peux discuter de l'intérêt de la boucle etc, mais pour moi la première réponse à donner c'est celle qui correspond à la question posée.

    qu'ils y aient des erreurs ou pas dans ton code en fait c'est pas très important, mais je me doute que tu l'as testé (ce qu'on fait tous bien sûr )

    ps: je dis pas que ta code sert à rien, c'est bien de proposer une approche différente
    Dernière modification par ProgElecT ; 30/09/2018 à 18h37.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ma fonction ne veut pas retourner un élément
    Par razbitume dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/03/2009, 17h25
  2. Fonction SetTimer : écart de temps pas respecté ?
    Par sivaller dans le forum Débuter
    Réponses: 2
    Dernier message: 20/11/2008, 09h50
  3. Une fonction qui ne veut pas de mes variables
    Par zebulondu54 dans le forum Langage
    Réponses: 5
    Dernier message: 09/06/2008, 05h41
  4. Réponses: 1
    Dernier message: 17/10/2007, 10h04
  5. resultat de la fonction ajdate qui ne respecte pas les critères
    Par alassanediakite dans le forum Requêtes et SQL.
    Réponses: 16
    Dernier message: 02/09/2007, 00h07

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