<HTML> <HEAD> <TITLE>test javascript : jeu du + ou -</TITLE> <META NAME="keywords" content="Javascript,C,form,HTML,internet"> <META name="description" content= "Comment lancer un programme (proche du C) dans une fenêtre HTML : Exemple complet : jeu de plus ou moins."> <SCRIPT language="JavaScript"> var LIMITE=500; //ceci est une variable globale, pour remplacer le #define //fonction qui retourne un nombre entre 1 et max compris function nb_aleatoire(max) { var nb=Math.floor((Math.random()*max)+1); return nb; } //fonction qui affiche un message d'encouragement (choisi aléatoirement parmi 3) function encouragement(lieu_du_message) { var c=nb_aleatoire(3); //choix aléatoire d'un des trois messages if(c=="2") lieu_du_message.value="courage, tu vas y arriver"; else if(c=="1") lieu_du_message.value="avec un moral comme le tien, tu ne peux que gagner !"; else lieu_du_message.value="j'ai confiance en ta perspicacité"; } //fonction qui à qui l'on donne le nombre d'essais et qui en déduit un commentaire function conclusion(lieu_du_message,nb_essais) { alert("gagné en " + nb_essais + " essais! "); if(nb_essais<2) lieu_du_message.value="surveille ton ami(e) de près !"; else if(nb_essais<5)lieu_du_message.value="bravo, c'est impressionnant !"; else if(nb_essais<12)lieu_du_message.value="ce n'est pas mal"; else lieu_du_message.value="pas génial comme score !"; } function un_jeu(fen_msg,fen_prop,fen_nb,fen_enc) { var proposition=0;var nb=0;var mini=0;var maxi=LIMITE+1; var solution=nb_aleatoire(LIMITE); do { if((nb>5) && (nb_aleatoire(4)==1)) encouragement(fen_enc); //après 5 essais,1 fois sur 4 env. proposition=parseInt(prompt("entrez votre proposition (-1 pour un conseil)",proposition)); fen_prop.value=proposition; if(proposition == -666) //ce cas n'ajoute pas 1 à nb alert("tu as trouvé le code tricheur : la solution est " + solution); else if(isNaN(proposition)) { alert("abandon"); return -1; } else //tous ces cas ajoutent 1 à nb { if(proposition == -1) { alert("à ta place, je proposerai " + Math.floor((mini+maxi)/2)); fen_msg.value="attention, ce conseil est compté comme un essai supplémentaire!"; } else if(proposition<=0 || proposition>LIMITE) { fen_msg.value="franchement hors limites"; fen_enc.value="un peu de concentration SVP !"; } else if(proposition<=mini) { fen_msg.value="je t'ai déja dit que c'est plus grand que " + mini; fen_enc.value="un peu de concentration SVP !"; } else if(proposition<solution) { mini=proposition; fen_msg.value="c'est trop petit"; } else if(proposition>=maxi) { fen_msg.value="je t'ai déja dit que c'est plus petit que " + maxi; fen_enc.value="un peu de concentration SVP !"; } else if(proposition>solution) { maxi=proposition; fen_msg.value="c'est trop grand"; } nb++; fen_nb.value=nb; } } while(!isNaN(proposition) && proposition!=solution); if(nb>0)conclusion(fen_enc,nb); fen_msg.value="gagné en " + nb + " essais"; return nb; //pour que main puisse traiter le "high score" } </script> </HEAD> <BODY bgcolor="#FFFFBB" background="/img/fond-var.gif"> <H1 align="center">test programmation javascript</H1> <H2 align="center">jeu de plus ou moins</H2> <P>Bonjour. Vous devez découvrir un nombre entre 1 et <script language="JavaScript">document.write(LIMITE);</script> (compris)</P> <FORM name="in_out"> <!-- la mise en page pourrait être améliorée mais ce n'est pas l'ojectif ici --> <P>votre proposition : <INPUT type="text" size="7" name="prop"></P> <P>nombre d'essais : <INPUT type="text" size="7" name="nb" value="0"></P> <P>mon conseil : <INPUT type="text" size="60" name="commentaire" value="cliquez sur 'jouer'"></P> <P>commentaire : <INPUT type="text" size="60" name="encouragement" value=""></P> <P><input type="button" value="jouer" onClick="un_jeu(in_out.commentaire,in_out.prop,in_out.nb,in_out.encouragement);"> <input type="reset" value="réinitialiser"></P> </FORM> <HR> <P><A HREF="http://pat.trau.fr/">Patrick Trau</A>, <A HREF="http://www-ipst.u-strasbg.fr/">IPST</A>, <A HREF="http://www-ulp.u-strasbg.fr/">Université Louis Pasteur</A> Strasbourg, mai 2002</P> </BODY> </HTML>
Patrick Trau, IPST, Université Louis Pasteur Strasbourg, mai 2002