Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tuto: Tout sur le javascript!

TD: Jeu du "Plus ou moins"

Sujet résolu
    5 août 2009 à 23:25:15

    Bonjour/bonsoir, je suis arrivé au jeu du "Plus ou moins" du tuto "Tout sur le javascript!". J'ai réussi à le faire fonctionner mais il ne ressemble pas du tout à celui de la correction (enfaite moi j'ai préféré utiliser un while plutôt qu'un do while) et j'aimerais savoir si mon code est correcte ou s'il est vraiment mieux d'utiliser un do while:
    var nbre_aleatoire = nb_aleatoire(0, 100);
    	var saisie = prompt('Le nombre est compris entre 0 et 100');
    	var i = ''; //nombre de coups
    	
    	if (isNaN(saisie))
    	{
    		prompt('Veuillez rentrer un chiffre!');
    	}
    	else
    	{
    		while (saisie != nbre_aleatoire)
    		{
    			if (saisie < nbre_aleatoire)
    			{
    				saisie = prompt('C\'est plus!');
    				i++;
    			}
    			else if (saisie > nbre_aleatoire)
    			{
    				saisie = prompt('C\'est moins!');
    				i++;
    			}
    		}
    		
    		if (saisie == nbre_aleatoire)
    		{
    			alert('C\'est gagne! \nIl t\'a fallu ' +i+ ' coups!');
    		}
    	}
    


    note: j'en suis pas encore au amélioration et le isNaN c'est moi qui est voulu l'ajouter vu que c'était facile a mettre en place dans ma tête
    • Partager sur Facebook
    • Partager sur Twitter
      5 août 2009 à 23:28:20

      Hum.
      Pour le if(isNaN(saisie)), si on rentre un nombre dans le prompt alors il est sauvegardé nulle part.
      Sinon ta condition ne sert à rien ici, déplace là juste au début de ta boucle.

      Et pour ta dernière condition, c'est facultatif mais on préfèrera faire if(saisie === nbre_aleatoire) (dans le cas où saisie ne serait pas un nombre, ça pourrait servir).

      Voilà :)
      • Partager sur Facebook
      • Partager sur Twitter
        5 août 2009 à 23:46:54

        Citation : Blackis

        Hum.
        Pour le if(isNaN(saisie)), si on rentre un nombre dans le prompt alors il est sauvegardé nulle part.
        Sinon ta condition ne sert à rien ici, déplace là juste au début de ta boucle.


        Ah oui d'accord, pas bête (j'ai pas compris tout de suite, je voyais pas pourquoi ce que j'avais fait n'allait pas :p )
        Donc au final ça donne ça non?
        var nbre_aleatoire = nb_aleatoire(0, 100);
        	var saisie = prompt('Le nombre est compris entre 0 et 100');
        	var i = ''; //nombre de coups
        
        while (saisie != nbre_aleatoire)
        		{
        			if (isNaN(saisie))
        			{
        				saisie = prompt('Veuillez rentrer un chiffre!');
        			}
        			else
        			{
        				if (saisie < nbre_aleatoire)
        				{
        					saisie = prompt('C\'est plus!');
        					i++;
        				}
        				else if (saisie > nbre_aleatoire)
        				{
        					saisie = prompt('C\'est moins!');
        					i++;
        				}
        			}
        		}
        		
        if (saisie == nbre_aleatoire)
        {
        	alert('C\'est gagne! \nIl t\'a fallu ' +i+ ' coups!');
        }
        


        Citation : Blackis


        Et pour ta dernière condition, c'est facultatif mais on préfèrera faire if(saisie === nbre_aleatoire) (dans le cas où saisie ne serait pas un nombre, ça pourrait servir).



        J'ai pas compris? C'est pas ce que j'ai fais?
        edit: Ah! Je viens de voir que tu as mis 3 "=", c'est fait exprès? Si oui ça change quoi?
        • Partager sur Facebook
        • Partager sur Twitter
          6 août 2009 à 0:03:05

          While et Do while c'est pareil.

          Ensuite:

          if (true == 1) {
          	// La condition est toujours vrai, car true est évalué comme 1
          }
          
          // Mais
          
          if (true === 1) {
          	// N'est pas vrai
          }
          
          // De même :
          
          if ("1" == 1) {
          	// Vrai
          }
          
          if ("1" === 1) {
          	// Faux
          }
          


          En gros, "===" c'est "strictement égal"
          • Partager sur Facebook
          • Partager sur Twitter
            6 août 2009 à 0:10:53

            Ah d'accord, merci à vous deux.

            Juste une question,
            if ("1" === 1) {
            	// Faux
            }
            

            est faux, mais est-ce que ça c'est juste?
            if (1 === 1) {
            }
            

            Parce que si 1 n'est pas strictement égal à 1, je comprend pas :p
            • Partager sur Facebook
            • Partager sur Twitter
              6 août 2009 à 0:20:50

              1 === 1 est juste.

              En fait, === prend en compte les types.

              Dans "1" === 1, tu demandes si la chaine de caractère "1" est identique au chiffre 1. Les types ne sont pas pareil, donc ils ne sont pas strictement identique

              Un exemple simple:

              function compare(i) {
              	var nombre = "2";
              	
              	if (i == nombre) {
              		i += 2;
              		nombre += 2;
              		
              		if (i == nombre) {
              			alert('identique');
              		}
              		else {
              			// Le premier if dit qu'ils sont pareil, et on ajoute 2 aux deux, donc normalement on va jamais ici, et pourtant..
              			alert('non identique 2');
              		}
              	}
              	else {
              		alert('non identique 1');
              	}
              }
              
              compare(2); // non identique 2
              compare("2"); // identique
              
              // Pareil mais avec ===
              function compare2(i) {
              	var nombre = "2";
              	
              	if (i === nombre) {
              		i += 2;
              		nombre += 2;
              		
              		if (i === nombre) {
              			alert('identique');
              		}
              		else {
              			alert('non identique 2');
              		}
              	}
              	else {
              		alert('non identique 1');
              	}
              }
              
              compare2(2); // non identique 1
              compare2("2"); // identique
              


              http://monhosteur.tiller.fr/explorerUpload/yo.php
              • Partager sur Facebook
              • Partager sur Twitter
                6 août 2009 à 0:26:11

                Parfait, merci à vous deux.

                S'il y a rien à redire sur mon code, je passe le sujet en résolu :)
                • Partager sur Facebook
                • Partager sur Twitter
                  6 août 2009 à 3:19:57

                  Citation : Tiller

                  While et Do while c'est pareil.



                  Non, pas tout à fait d'accord.

                  Un petit exemple stupide mais tout simple :

                  var continuer = confirm("continuer ?");
                  while(continuer) {
                    continuer = confirm("continuer ?");
                  }
                  


                  do {
                    var continuer = confirm("continuer ?");
                  } while(continuer);
                  


                  Une ligne de gagnée...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 août 2009 à 10:31:32

                    Mais au final, l'utilisation est identique quoi. Y'a le même effet. Il hésitait car il n'avait utiliser do while, je lui disais que ce qu'on peut faire avec do while, on peut avec while <_>
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 août 2009 à 10:56:09

                      Ah ok. Ta tournure de phrase semblait signifier qu'il n'y avait pas de différence.

                      En effet, tout ce qui s'écrit avec un while peut normalement s'écrire avec un do while et même avec un for.

                      Mais si elles existent toutes, c'est bien parce que certaines sont plus adaptées dans certains cas. ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 août 2009 à 11:35:44

                        Sinon, var i = ''; //nombre de coups s'pas le top, on préfèrera mettre 0 que deux apostrophes.

                        À part ça je n'ai rien d'autre à ajouter :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 août 2009 à 11:45:11

                          Effectivement, je n'avais pas vu
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 août 2009 à 13:26:54

                            Citation : Blackis

                            Sinon, var i = ''; //nombre de coups s'pas le top, on préfèrera mettre 0 que deux apostrophes.

                            À part ça je n'ai rien d'autre à ajouter :)



                            D'acc. Puisque tu parles de ça, je me demandais si <var i = ' '>; pouvait aussi s'écrire comme ça? (histoire de confirmer si j'ai bien compris le tuto que j'ai lu hier :p )
                            var i;
                            


                            • Partager sur Facebook
                            • Partager sur Twitter
                              6 août 2009 à 13:30:24

                              Si tu écris juste var i; tu déclares la variable sans l'initialiser.

                              C'est tout à fait correct, mais ça dépend de l'utilisation que tu veux en faire ^^

                              Car si juste après tu écris i++ par exemple, ça va planter. (logique)
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Tuto: Tout sur le javascript!

                              × 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