Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 10 sur 310 PremièrePremière ... 234567891011121314151617182060110 ... DernièreDernière
Affichage des résultats 271 à 300 sur 9277
  1. #271
    Citation Envoyé par Tomaka17 Voir le message
    bla
    J'ai testé et ton truc marche finalement, ça foirait autre part (dingue comme les problèmes d'une autre fonction peuvent complètement geler l'entier du script. Merci.

    Du coup, ce truc du document.write marcherait si je voulais faire pareil avec des images ? Genre :

    Code:
    function ex4() {
    			for (i=1; i<8; i++) {
    					document.write('<img src="http://.../photo'+i+'.jpg" />');
    		}


    ---------- Post added at 17h59 ---------- Previous post was at 17h58 ----------

    Citation Envoyé par Tomaka17 Voir le message
    Si t'as l'impression que c'est plus logique sans guillemets, c'est que t'as pas dû piger un truc.

    Essaye de les mettre et ça te corrigera probablement ton erreur.
    Je voulais dire "avec"

    EDIT : et merci pour le coup de main. Je suis complètement paumé dans ces exercices et comme je suis à l'étranger je ne peux pas vraiment solliciter le prof. C'est super galère comme truc et la façon qu'ils ont de nous balancer des exos à l'aveugeltte me facilite pas la tâche (perso). Je sais même pas comment faire pour taper ma recherche.

  2. #272
    Oui ça marche.
    Par contre t'as encore couilloné au niveau des guillemets, c'est plutôt :
    Code:
    document.write('<img src="http://.../photo' + i + '.jpg" />');
    J'ai mis en bleu les chaînes de caractères pour que tu comprennes l'idée.

    J'ai une première chaîne de caractères qui contient :
    Code:
    <img src="http://.../photo
    Et j'ai une seconde chaîne de caractères :
    Code:
    .jpg" />
    Ensuite j'additionne la première avec i, ce qui donne (si i vaut 12 par exemple) :
    Code:
    <img src="http://.../photo12
    Puis j'additionne ce résultat avec la seconde chaîne, ce qui donne :
    Code:
    <img src="http://.../photo12.jpg" />
    Et c'est ce dernier résultat qui est donné à document.write

    En plus attention aux guillemets.
    Si je prends ton code et que je mets en bleu tout ce qui est chaîne de caractères, j'obtiens :
    Code:
    document.write('<img src='http:'//.../photo'+i+'.jpg />');
    Et du coup y a un http: qui traîne au milieu qui déclenche une erreur.

    Soit tu mets deux types de guillemets différents, par exemple tu utilises le ' pour délimiter les chaînes de caractères mais à ce moment-là tu ne peux pas utiliser ' à l'intérieur, c'est ce que j'ai fait dans l'exemple plus haut.
    Ou alors tu mets un anti-slash juste avant le ' à l'intérieur, ce qui signifie qu'il ne doit pas être interprété. Comme ça :

    Code:
    document.write('<img src=\'http://.../photo'+i+'.jpg\' />');
    Je pense que t'as dû voir ça en cours si le prof te demande ce genre de trucs.

    Si t'as du mal tu peux éventuellement essayer un éditeur avec colorisation du code. Tu tapes ton code dedans et il te met dans une certaine couleur tout ce qui est chaîne de caractères, dans une autre tout ce qui est variable, etc.
    Rust fanboy

  3. #273
    Oui oui, j'ai copié/collé un peu vite avant relecture et correction. C'est bon maintenant. Mais merci pour l'explication, j'avais de la peine à comprendre exactement comment considérer document.write.

    ---------- Post added at 18h11 ---------- Previous post was at 18h09 ----------

    D'ailleurs, question annexe, je vois que tu mets systématiquement des espaces avant et après les opérateurs. Perso, je le fais pas, mais c'est une habitude que je devrais prendre déjà maintenant ? Ça pourrait aider à la lisibilité pour des textes plus longs ?

    Et j'ai mis en ligne comme un chef !
    Code:
    function ex4() {
    			document.write('<tr>');
    			for (i=1; i<8; i++) {
    					document.write('<td><img src="http://...photo'+i+'.jpg" /></td>');
    			}
    			document.write('</tr>');
    		}

  4. #274
    Citation Envoyé par MrBeaner Voir le message
    D'ailleurs, question annexe, je vois que tu mets systématiquement des espaces avant et après les opérateurs. Perso, je le fais pas, mais c'est une habitude que je devrais prendre déjà maintenant ? Ça pourrait aider à la lisibilité pour des textes plus longs ?
    C'est une question de préférence personnelle.
    Je trouve tout simplement ça plus beau quand il y a des espaces autour.
    En revanche en PHP (qui est plus ou moins similaire) je ne le fais pas, parce qu'on utilise des points . à la place des +, et que du coup comme c'est des points c'est plus joli quand c'est collé.

    Pour ce qui est de la lisibilité, tu utiliseras tôt ou tard un éditeur de texte qui va te mettre ton code en couleur, donc peu importe.
    Si un code est très difficile à lire, en général ce ne sont pas quelques espaces ou fioritures de ce genre qui vont changer la donne.
    Rust fanboy

  5. #275
    Merci. Merci pour tout. Sans toi, j'étais parti pour laisser tomber mon truc avant la fin de la journée (il est passé 1h ici). J'ai même réussi à faire mon exercice 5 tout seul comme un grand.

    Parce que je suis curieux, je te le montre :

    Code:
    function ex5() {
    			i=1;
    			while (i<10) {
    				if (i%2==0) {
    					document.write('<tr>');
    					document.write('<td><img src="http://.../photo'+i+'.jpg" /></td>');
    					document.write('</tr>');
    				}
    				else {
    				}
    				i++;
    			}
    		}
    Est-ce que le "else" vide peut se faire de manière plus logique ? Plus logique ? Est-ce que j'aurais dû utiliser autre chose que le "if...else" ? Là, tout de suite, je pense à une boucle "for (i=1; i<10 && i%2==0; i++)".

    EDIT : ah ben après essai ma boucle for ne marche pas

    REDIT : ah ben l'exercice oblige le recours à la boucle "while". Dommage, c'était une bonne idée à première vue (pas selon mon navigateur ceci dit ).

  6. #276
    Ben tu peux virer le "else {}" qui ne sert absolument à rien. If tout court ça marche aussi, pas besoin de else.

    Sinon ton idée de "for (i=1; i<10 && i%2==2; i++)" est mauvaise, car il va détecter que 1 n'est pas un multiple de 2 et sauter totalement la boucle for. Du coup tu n'auras rien du tout qui s'affiche à l'écran. À partir du moment où la condition est fausse, la boucle for saute totalement.
    EDIT : en fait c'est pire, car "i % 2 == 2" c'est impossible quelque soit la valeur de i. Je pense que tu as voulu écrire '== 0'.

    Par contre tu peux faire :
    Code:
    for (i = 2; i < 10; i += 2) {
      document.write('<tr>');
      document.write('<td><img src="http://.../photo'+i+'.jpg" /></td>');
      document.write('</tr>');
    }
    Ou alors :
    Code:
    for (i = 1; i < 5; i++) {
      document.write('<tr>');
      document.write('<td><img src="http://.../photo'+(i*2)+'.jpg" /></td>');
      document.write('</tr>');
    }
    Ou alors si tu connais "continue" :
    Code:
    for (i = 1; i < 10; i++) {
      if (i % 2 != 0)
        continue;
      document.write('<tr>');
      document.write('<td><img src="http://.../photo'+i+'.jpg" /></td>');
      document.write('</tr>');
    }
    Rust fanboy

  7. #277
    Ou encore :
    Code:
    i=1;
    switch(i % 2) {
    case 0:
      for (i; i < 10; i-=~!(i&1)) {
        document.write('<tr>');
        document.write('<td><img src="http://.../photo'+i+'.jpg" /></td>');
        document.write('</tr>');
    case 1:
      }
    }
    Désolé.

  8. #278
    Citation Envoyé par Møgluglu Voir le message
    Ou encore :
    Code:
    i=1;
    switch(i % 2) {
    case 0:
      for (i; i < 10; i-=~!(i&1)) {
        document.write('<tr>');
        document.write('<td><img src="http://.../photo'+i+'.jpg" /></td>');
        document.write('</tr>');
    case 1:
      }
    }
    Désolé.

  9. #279
    Citation Envoyé par Møgluglu Voir le message
    Ou encore :
    Code:
    i=1;
    switch(i % 2) {
    case 0:
      for (i; i < 10; i-=~!(i&1)) {
        document.write('<tr>');
        document.write('<td><img src="http://.../photo'+i+'.jpg" /></td>');
        document.write('</tr>');
    case 1:
      }
    }
    Désolé.
    Ptain je connaissais pas cette syntaxe
    Brainfuck assuré


  10. #280
    D'ailleurs y'a une âme charitable qui peut traduire le i-=~!(i&1)
    C'est le rôle du ~ que je ne comprend pas.

  11. #281
    ~ inverse tous les bits

    En fait quand i est pair, tu auras (i&1) qui vaut 0, et quand i est impair ça vaudra 1.
    Tu rajoutes un ! devant, du coup c'est l'inverse : quand i est pair, !(i&1) vaut 1, et quand i est impair ça vaut 0.

    Ensuite tu inverses les bits. 0 devient 1111....1111111 (c'est à dire -1), et 1 devient 1111....1111110 (c'est à dire -2)
    Donc quand i est impair ce calcul est en fait équivalent à (i+=1), et quand i est pair ce calcul est équivalent à (i+=2)

    Pour ce qui est de l'exécution du code, i commence à 1, du coup on saute à la fin de la boucle for, puis on revient au début de la boucle et i devient 2, et la boucle continue avec à chaque fois i+=2

    ---------- Post added at 19h55 ---------- Previous post was at 19h45 ----------

    Si ce genre de truc vous intéresse : http://www.ioccc.org/
    Par exemple ce code prend en entrée une chaîne de caractères, par exemple "forty-two", et sort sa traduction numérique, par exemple 42.
    Rust fanboy

  12. #282

  13. #283
    Hey c'est marrant sur les trentes-douzes exemples donnés y'a personne qui a relevé l'oubli de var devant i et l'utilisation de document.write à la place d'accéder au dom.

  14. #284
    L'explication "intuitive" est qu'en complément à deux, la négation (-a) est équivalente par définition au non logique de la valeur, plus un (~a+1).
    Comme -a=~a+1, pour incrémenter une valeur (b+1) on peut poser b=~a (d'où a=~b) pour avoir l'équivalence :
    -~b=b+1
    Ici, b=!(i&1) et la négation s'intègre dans le += qui devient un -=.

    Outre l'OCCC, ce genre de hack sert pour faire du SIMD sur des jeux d'instructions "pauvres" genre MMX ou Cell SPE.
    Par exemple pour sélectionner le max m de 2 nombres x et y, il suffit de faire :
    Code:
    m=-(y<x)
    m=~m&y|m&x
    Ou plus académique :
    Code:
    (((y-x)>>31)&(y^x))^x
    Ou pour prendre la valeur absolue de a :
    Code:
    m=a>>31
    m=~(m|(a-1))|m&a
    Nettement plus joli, non ?

    Citation Envoyé par Tomaka17 Voir le message
    Si ce genre de truc vous intéresse : http://www.ioccc.org/
    Par exemple ce code prend en entrée une chaîne de caractères, par exemple "forty-two", et sort sa traduction numérique, par exemple 42.
    Non mais eux c'est des artistes, c'est un autre niveau…
    Dernière modification par Møgluglu ; 14/11/2012 à 21h09.

  15. #285
    Citation Envoyé par Møgluglu Voir le message
    L'explication "intuitive" est qu'en complément à deux… blabla...
    Et encore, ça c'est juste pour le web.
    "Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."

  16. #286
    Voilà pourquoi il fallait bannir les barbus du topic

  17. #287
    Bon j'ai un problème avec Chrome.

    Dans Opera j'ai fais un UserJS qui me permet sur une page de dégommer tout les scripts avant leur exécution. Ainsi je peux bosser tranquille sur la page sans que les scripts d'origine viennent interférer avec le mien.
    J'ai fais cela :
    Code:
      window.opera.addEventListener('BeforeExternalScript', function (e){
        e.preventDefault();
      }, false);
      window.opera.addEventListener('BeforeScript', function (e){
        e.preventDefault();
      }, false);
    J'ai trouvé un équivalent sous Firefox, par contre pour Chrome à part des vieux trucs de gens qui se plaignent que c'est pas possible en comparant avec FF ou Opera. J'ai rien trouvé.
    Si ça vous dit quelques chose.
    Pour l'instant je suis parti sur document.scripts mais ça ne semble pas fonctionner.
    Ma deuxieme solution est de trouver où se trouvent tout les déclaration événement et d'annuler avec removeEventListener les événement Javascript.

  18. #288
    Encore une question mais en CSS, pourquoi il n'est pas possible d'annuler un opacity hérité.
    J'ai fait une petite page en html5, j'ai utilisé la balise header pour créer l'entête avec le titre et le menu dans cette arborescence:/html/body/header/nav/ul/li/a
    J'ai appliqué sur le Header un opacity: 0,8; et je voudrai que le li soit en opacity 1 mais ça n'a aucun effet.

    Et c'est con le html5 un truc qui saute aux yeux :


    Pourquoi pas de balise <content> ?

    D'avance Merci

  19. #289
    L'opacité de ton li est bien a 1 : il est totalement visible mais contenu dans un élément transparent ()

    (pour content, à la base pas mal pensaient que <section> était fait pour ça alors qu'en fait non. En fait c'est le rôle de <div>)

  20. #290
    Avant ce que je faisais c'était appliquer une image de fond en PNG transparent. Ainsi quand j'appliquais une couleur de fond à un élément il apparaissait opaque.
    Du coup si je comprend bien avec opacity c'est pas possible ? Je devrait retourner avec mes vieilles bidouilles
    Autant que je comprend que tu ne peux pas avoir d'effet de transparence d'un élément qui est au dessus d'un autre opaque, autant que ca ne me choque pas le moins du monde pour ce que je veux faire.
    Du coup je dois mal utiliser opacity, ou l'utiliser dans un contexte mal adapté, car en plus même le texte est transparent, moi je voulais avoir que le background de ma boite de transparent (comme la bidouille avec le png).

    (roh ça tombe bien j'ai mis un div et dans ma css j'ai fait une règle body>div)

  21. #291
    Je dis ça totalement au pif, mais t'as essayé "opacity:1.25" dans ton li ? Peut être que ça multiplie par l'opacité du parent.
    Rust fanboy

  22. #292
    Citation Envoyé par moimadmax Voir le message
    Avant ce que je faisais c'était appliquer une image de fond en PNG transparent. Ainsi quand j'appliquais une couleur de fond à un élément il apparaissait opaque.
    Du coup si je comprend bien avec opacity c'est pas possible ? Je devrait retourner avec mes vieilles bidouilles
    Autant que je comprend que tu ne peux pas avoir d'effet de transparence d'un élément qui est au dessus d'un autre opaque, autant que ca ne me choque pas le moins du monde pour ce que je veux faire.
    Du coup je dois mal utiliser opacity, ou l'utiliser dans un contexte mal adapté, car en plus même le texte est transparent, moi je voulais avoir que le background de ma boite de transparent (comme la bidouille avec le png).

    (roh ça tombe bien j'ai mis un div et dans ma css j'ai fait une règle body>div)
    'bah tu mets le background transparent, pas la boite dans laquelle tu fois tes trucs...

  23. #293
    Ou alors un fond en rgba() si c'est un fond de couleur.

    Edit :

    background-color : rgba(0,0,0,0.5);
    donnera par exemple un fond noir opaque à 50%.
    (Pour IE8-, soit un fallback en PNG, soit un filter.)

  24. #294
    Citation Envoyé par Mdt Voir le message
    Ou alors un fond en rgba() si c'est un fond de couleur.

    Edit :

    background-color : rgba(0,0,0,0.5);
    donnera par exemple un fond noir opaque à 50%.
    (Pour IE8-, soit un fallback en PNG, soit un filter.)
    Nickel ça fonctionne Merci, Thanks, Gracias.
    IE8- je m'en fou un peu. C'est pas pour du grand public mais pour moi en grande partie.

  25. #295
    Si j'ai une fonction "trouver_nombre (x,y)" qui trouve un nombre aléatoire entre x et y inclus, est-ce que déclarer une variable "var n=alea (1,30)" est un bon moyen de lui attribuer un nombre aléatoire ? Parce que là j'ai y a pas moyen de m'afficher ma fenêtre de saisie si je lance une partie par un bouton. La console d'erreur m'affiche que ma fonction n'est pas définie :

    Code:
    function Jouer_manche() {
    			var n = trouver_nombre(1,30);
    			var try = 0;
    			var msg = "Trouvez un nombre entre 1 et 30.";
    			var user_n = prompt(msg, " ");
    			while (user_n!=n) {
    				prompt(msg, " ");
    				try++;
    				if (user_n<n) {
    					msg = "C'est moins.";
    				}
    				else {
    					msg="C'est plus.";
    				}
    			}
    			alert("Correct ! Il vous a fallu " + try + " coup(s) pour deviner le nombre.");
    		}
    		function Jouer_partie () {
    			
    		}
    	</script>
    </head>
    <body>
    	<input type="button" value="Jouer une manche" onclick="Jouer_manche()">
    </body>
    </html>
    EDIT : pour info, la fonction trouver_nombre se trouve dans un autre fichier que j'ai lié au mien de cette façon :

    Code:
    <script type="text/javascript" src="http://...ProgramWeb-Algo/file/nb_aleatoire.js">
    </script>
    REDIT : hum. Je pense que je ferais mieux d'écrire "while user_n!==n" non ?

    ---------- Post added at 18h20 ---------- Previous post was at 18h12 ----------

    Je crois que c'est même plus efficace d'écrire ma boucle ainsi, non ?

    Code:
    do {
    			prompt(msg, " ");
    				try++;
    				if (user_n<n) {
    					msg = "C'est moins.";
    				}
    				else {
    					msg="C'est plus.";
    			} while (user_n !== n);

  26. #296
    1. Ne mets aucun espace entre "<script ....>" et "</script">
    Ca doit être comme ça : <script type="text/javascript" src="http://...ProgramWeb-Algo/file/nb_aleatoire.js"></script>, et avec aucun espace ni retour chariot entre les trucs en gras.

    2. Je ne savais même pas que === et !== existaient en javascript
    En tout cas il ne faut justement pas les utiliser dans ce cas de figure. Ce que l'utilisateur tape c'est un texte, alors que le nombre aléatoire c'est un nombre. Si tu utilises !== ou === il va se dire "hum à gauche j'ai un texte et à droite c'est un nombre, donc on refuse"
    En revanche si tu utilises == ou !=, il va analyser le contenu même si le type est différent. Si tu as le texte "42" d'un côté et le nombre 42 de l'autre, il va quand même comprendre que c'est la même chose.

    3. Faut que tu rajoutes "user_n = " devant ton "prompt(msg, ' ')"

    Autrement je n'ai vu aucune erreur dans ton premier code (en revanche il manque une accolade dans ton deuxième code).
    Du coup c'est juste la fonction qui manque le problème.
    Rust fanboy

  27. #297
    Citation Envoyé par Tomaka17 Voir le message
    1. Ne mets aucun espace entre "<script ....>" et "</script">
    Ca doit être comme ça : <script type="text/javascript" src="http://...ProgramWeb-Algo/file/nb_aleatoire.js"></script>, et avec aucun espace ni retour chariot entre les trucs en gras.
    Mais si je ne doit rien mettre dans la balise qui renvoie à un autre fichier, ça devrait donner un truc comme ça (y a des changements dans le code, fais pas gaffe encore je finis mon exercice) ?

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>
    	</title>
    	<script type="text/javascript">
    	<script type="text/javascript" src="http://.../ProgramWeb-Algo/file/nb_aleatoire.js"></script>
    		function Jouer_manche(min,max) {
    			var n = trouver_nombre(min,max);
    				attempt = 0;
    				msg = 'Trouvez un nombre entre 1 et 30.';
    				user_n = prompt(msg, " ");
    			do {
    				prompt(msg,'');
    				attempt++;
    				if (user_n<n) {
    					msg = "C'est moins.";
    				}
    				else {
    					msg="C'est plus.";
    			} while (user_n !== n);
    			alert('Correct ! Il vous a fallu ' + attempt + ' coup(s) pour deviner le nombre.');
    		}
    		function Jouer_partie () {
    			var attempt = 0;
    				best = 0;
    				score;
    				continuer;
    			do {
    				
    			} while (continuer = true);
    		}
    	</script>
    </head>
    <body>
    	<input type="button" value="Débutant" onclick="Jouer_partie(1,30)">
    	<input type="button" value="Normal" onclick="Jouer_partie(1,100)">
    	<input type="button" value="Difficile" onclick="Jouer_partie(0,250)">
    </body>
    </html>
    EDIT : merci pour la précision du signe "!==". Je pensais intuitivement qu'il serait la négation de "==" mais en fait c'est la négation de "===". Et puis "try" est en effet un mot réservé. Oh, et merci de me rappeler qu'il faut que je m'habitue à mettre par défaut les guillemets simples (c'est plus propre à mon goût, et c'est toi qui m'y a initié ).

    REDIT : au fait, si le libellé de l'exercice explicite

    répétez ces actions au moins une fois même si la condition n’est pas respectée
    c'est qu'il me demande bien une boucle do...while en l'espèce non ? Je ne vois pas quelle autre boucle ferait de même.

  28. #298
    Il faut que ton <script> soit à l'extérieur de l'autre <script> :
    Code:
    <script type="text/javascript" src="http://.../ProgramWeb-Algo/file/nb_aleatoire.js"></script>
    <script type="text/javascript">
     ... blabla ...
    </script>
    Avec ton bidule t'as essayé de faire un sorte de #include. Ca existe dans certains langages mais pas en javascript.
    En fait tous les scripts d'une page sont en quelques sortes "groupés". Tu peux créer une variable dans un <script> et la lire dans un autre par exemple. Par contre tu peux pas mettre de balise <script> à l'intérieur d'une autre balise <script>.
    Je l'ai déjà dit, mais tout ce qu'il y a dans une balise <script> c'est du javascript. Or "<script>" c'est pas du javascript mais du HTML.


    Et pour les guillemets simples, j'en ai mis parce que j'ai mis des guillemets doubles autour, rien à voir avec plus propre ou quoi. C'est juste plus lisible quand tu écris du code sur un forum que les guillemets soient différents.

    Pour ton libellé ça peut être un for, un while, un do-while. Les trois sont des boucles qui peuvent se répéter tant que queqlue chose n'est pas respecté.
    Rust fanboy

  29. #299
    Citation Envoyé par Tomaka17 Voir le message
    Pour ton libellé ça peut être un for, un while, un do-while. Les trois sont des boucles qui peuvent se répéter tant que queqlue chose n'est pas respecté.
    Je comprenais plutôt que la boucle do...while s'exécutait au moins une fois puisque le while est vérifié après. Avec la boucle for, comme tu me l'avais montré la semaine dernière dans l'exemple "for (i=1 ; i<10 && i%2==0 ; i++)", l'exécution d'un cycle dépend de quand la condition est vérifiée.

    Me trompé-je ?

    Mis à par ça, je crois avoir fini mon TP. Malheureusement, il ne veut pas se lancer. La console d'erreur me dit que la fonction "Jouer_partie" n'est pas définie. En poussant plus loin, je remarque quelques erreurs d'accolades, des problèmes d'opérateurs etc. Mais là j'ai un problème de compréhension : on me dit

    - Déclarez une variable sans l’initialiser. Elle permettra de récupérer le score de la partie en cours.

    - Déclarez une variable continuer sans l’initialiser. Elle permettra de déterminer si on continue ou non la partie.
    Bon enfant, je me dis qu'il faut les déclarer comme variable sans leur donner de valeur (ici les variables "score" et "continuer"). Mais c'est ce que me reproche la console d'erreur justement.

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    	<title>
    	</title>
    	<script type="text/javascript" src="http://.../ProgramWeb-Algo/file/nb_aleatoire.js"></script>
    	<script type="text/javascript">
    		function Jouer_manche(min,max) {
    			var n = trouver_nombre(min,max);
    				attempt = 0;
    				msg = 'Trouvez un nombre entre' + min + ' et ' + max + '.';
    				user_n = prompt(msg,'');
    			do {
    				user_n = prompt(msg,'');
    				attempt++;
    				if (user_n<n) {
    					msg = "C'est plus.";
    				}
    				else {
    					msg = "C'est moins.";
    				}
    			} while (user_n != n);
    			alert('Correct ! Il vous a fallu ' + attempt + ' coup(s) pour deviner le nombre.');
    		}
    		function Jouer_partie (min,max) {
    			var game = 0;
    				best = 0;
    			do {
    				Jouer_manche(min,max);
    				score == attempt;
    				if (score<best || best == 0) {
    					game++;
    					best = score;
    					continuer = window.confirm('Vous avez gagnés en ' + score + ' coups.<br>Voulez-vous rejouer ?');
    				}
    				else {
    					continuer = false;
    				}					
    			} while (continuer = true);
    			alert('Vous avez gagné en' + game + ' manche(s). Votre meilleur score est de ' + best + '.');
    			return best;
    		}
    	</script>
    </head>
    <body>
    	<input type="button" value="Débutant" onclick="Jouer_partie(1,30)">
    	<input type="button" value="Normal" onclick="Jouer_partie(1,100)">
    	<input type="button" value="Difficile" onclick="Jouer_partie(0,250)">
    </body>
    </html>


    ---------- Post added at 20h32 ---------- Previous post was at 20h27 ----------

    Hum je me demande si ma conditionnelle n'est pas un peu tirée par les cheveux. Je pense que ce serait plus logique de l'écrire comme ça :

    Code:
    function Jouer_partie (min,max) {
    			var game = 0;
    				best = 0;
    			do {
    				Jouer_manche(min,max);
    				score = attempt;
    				if (score<best || best == 0) {
    					game++;
    					best = score;
    					continuer = window.confirm('Vous avez gagnés en ' + score + ' coups.<br>Voulez-vous rejouer ?');
    				}
    				else {
    					continuer = false;
    				}					
    			} while (continuer = true);
    			alert('Vous avez gagné en' + game + ' manche(s). Votre meilleur score est de ' + best + '.');
    		}
    Pour info, c'est censé traduire ça comme instruction :

    Ecrire l’algorithme suivant :
    o Tant que la variable continuer est à true alors (répétez ces actions au moins une fois
    même si la condition n’est pas respectée) :
     Jouez la manche en appelant la fonction Jouer_manche et récupérez le score
    dans la variable adéquate
     Si on récupère un score alors :
     On incrémente le nombre de manches jouées de 1
     Et on teste le score :
     Si le score est inférieur au meilleur score ou si le meilleur
    score est égal à 0 alors : on initialise la variable du meilleur
    score à la valeur du score en cours et on initialise la variable
    continuer avec une boîte de dialogue confirm qui indiquera à
    l’utilisateur qu’il a gagné en x coups et s’il veut rejouer.
     Sinon on met la variable continuer à false.
    o A la fin de la boucle :
     Affichez une alerte qui indiquera à l’utilisateur le nombre de manches qu’il a
    joué ainsi que son meilleur score.
     Retournez le meilleur score


    ---------- Post added at 20h37 ---------- Previous post was at 20h32 ----------

    Aaaaah okay, encore ce truc des doubles égalités que j'ai du mal à saisir. J'aurais dû écrire "score == attempt"

    EDIT : ah ben non. "score" reste quand même non défini. Hmpf ! Par contre, le jeu se lance bien (je corrige les imperfections en haut).

    REDIT : c'est bon, "score = attempt" était correct. Le truc c'est que la logique des instructions foire un peu : la fenêtre window.confirm s'affiche, mais si je clique sur "annuler" je me retrouve à nouveau dans le jeu alors que je voudrais voir apparaître la fenêtre récapitulative de ma performance (la dernière "alert").
    Dernière modification par MrBeaner ; 21/11/2012 à 21h00.

  30. #300
    J'arrive pas à suivre ton truc avec tous tes EDIT et REDIT.

    En tout cas pour ton dernier problème c'est parce que t'as écrit "while(continue = true)" au lieu de "while (continue == true)".

    Par contre, autant pour le style du code en général tu fais comme tu veux, autant pour l'indentation c'est important de pas faire trop n'importe quoi pour que ça reste lisible.
    Par exemple "best = 0" devrait être aligné sur la même colonne que "var game = 0". À chaque fois que tu entres dans une fonction ou dans un if ou dans une boucle, tu décales d'un cran vers la droite, et quand tu en sors tu décales d'un cran vers la gauche.
    Rust fanboy

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •