Les vacances sont là. Et pour passer le temps au frais devant son écran et avec une bonne bière, rien de tel qu'un petit jeu. D'autant plus que vous pourrez le proposer sur vos sites en ouvrant une fenêtre (ou popup).... puisque c'est du JavaScript...
Petit truc pour trouver rapidement Pour trouver le nombre en un minimum de coups, il faut utiliser le principe de la dichotomie. Ainsi, si le nombre mystérieux est situé entre 1 et 100, alors la première proposition sera 50. Si la réponse est "plus petit" on proposera 25 (la motité de 50) et si la réponse est "plus grand" on proposera 75 (entre 50 et 100). Et ainsi de suite, en coupant toujours en deux l'intervalle dans lequel le nombre se trouve. Avec cette méthode, vous êtes sûr(e) de trouver. Avec un peu de chance, vous trouverez avant le dernier coup, mais avec beaucoup de chance, tout est possible... ;-)
Fonctionnement
Ci-dessous le code commenté. Il ne présente aucune difficulté particulière. La fourchette dans laquelle le nombre est tiré se règle simplement à l'aide de la ligne "var maxi=1000;". Vous pourrez adapter le code pour que l'utilisateur choisisse cette valeur maxi. Le nombre de coups autorisés est calculé en fonction de cette valeur.
jeu100.htm
<html> <head> <script language="javascript"> // Réservation des variables var nbcoups=0; // Nombre de coups var wnombre=0; // Nombre tiré par l'ordinateur var maxi=1000; // Fourchette (1 à ce que vous voulez) var autor=1; // Nombre de coups autorisés function tirer_nombre(nb) { // Le nombre de coups autorisés est calculé ici // En effet, le joueur doit trouver le nombre en un minimum de coups // Or, c'est par dichotomie qu'il doit procéder et pour trouver le nombre // de coups, il suffit de faire une boucle en multipliant par 2 (dichotomie) // jusqu'à ce que le résultat soit supérieur ou égal à la borne maxi borne=2; while(borne<maxi){autor=autor+1;borne=borne*2;} // Tirer un nombre aléatoire entre 1 et nb wnombre=Math.round(Math.random()*nb); } function plus_moins(lui) { // Comparaison du nombre proposé avec le nombre à trouver nbcoups=nbcoups+1; document.frm.coups.value=nbcoups; if(wnombre==lui) {document.frm.mess.value="Vous avez trouvé";alert('Bravo');location.reload(true);} if(wnombre>lui) {document.frm.mess.value="Le nombre est plus grand";document.frm.proposition.select();} if(wnombre<lui) {document.frm.mess.value="Le nombre est plus petit";document.frm.proposition.select();} if((nbcoups>=autor)&&(wnombre!=lui)) {alert('Le nombre était '+wnombre);location.reload(true);} } </script> </head> <body onLoad="document.frm.proposition.focus();"> <script>tirer_nombre(maxi);</script> <h3>Trouver un nombre entre 1 et <script>document.write(maxi);</script></h3> <form name="frm"><font face="Verdana, Arial, sans-serif" size=2> <input type="text" style="border-width=0px;color=#0000FF;" name="mess" value="Faîtes une proposition..." size=80> <br><br> Vous avez fait <input type="text" style="border-width=0px;" name="coups" value="0" size=1> propositions sur les <script>document.write(autor);</script> autorisées<br> Proposez un nombre : <input type="text" style="border-style:solid; border-width:1px;" name="proposition" size=5> <input type="button" onclick="plus_moins(document.frm.proposition.value)" value=" Ok "> </form> </body> </html>
Et si l'ordinateur cherchait un peu maintenant ...