Jeux de l'été (et de 5) |
Un jeu de Motus (mots de 8 lettres) |
|
 |
C'est reparti pour un tour...
Comme je venais de proposer un jeu de Mastermind, je me suis dit que, sur le même modèle, je pouvais créer un jeu de Motus.
C'est pourquoi, là encore, j'ai utilisé des images de différentes couleurs et non les lettres dont j'aurais pu changer les attributs « font » et « color ».
Celui-ci est en JavaScript et il pourra donc être facilement mis en place. De plus, j'ai veillé à ce qu'il tourne à la fois sous FireFox et sous IE.
Vous pourrez facilement l'adapter à des mots de 7 lettres, voire 6 ou 5, puisque le fichier des mots est séparé du code.
A vous de réfléchir pour trouver les mots de 8 lettres tirés aléatoirement ;-)
|
Tester la démo -
Télécharger tous les fichiers
| Fonctionnement | Ci-dessous le code commenté. Le principe est simple, identique au jeu connu de tous. Il suffit de taper un mot de 8 lettres puis de cliquer sur «Vérifier». Les messages (Bravo !, Perdu :(, etc.) peuvent bien sûr être adaptés à vos besoins... |
|
|
| motus.htm |  |  | |
| <html> <head> <META NAME="AUTHOR" CONTENT="Denis Blomme"> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> <style> input {font-family:Verdana,Arial;font-size:14px;} td {text-align:center;font-family:Verdana,Arial;font-size:10px;} </style> <!-- Le fichier des mots de 8 lettres est à part --> <script language="javascript" src="mots8.js" type="text/javascript"></script> <script language="javascript"> // Réservation des variables var nbmots=mots.length; // Nombre de mots var prop=new Array(0,0,0,0,0,0,0,0,0); // Pour stocker les mal var cherche=""; // Le mot à trouver var stock=""; // Stocker les lettres à réafficher var work=""; // Table de travail var nbcoups=0; // Compteur des coups var nbcoupsmax=7; // Nombre de coups autorisés var nblettres=8; // Nombre de lettres au total // // Les fonctions // // Tirer un mot au hasard et réinitialiser function combinaison() { // On tire aléatoirement un mot Nball=1+Math.floor(Math.random()*nbmots);cherche=mots[Nball].toUpperCase(); //for(i=0;i<nbcoupsmax;i++){document.frm ["R"+i].value="";} document.frm.libnb.value="Il vous reste " + (nbcoupsmax-nbcoups) + " coups"; Nball=1+Math.floor(Math.random()*nblettres); // Tirer une lettre à "offrir" work=""; for(i=0;i<nblettres;i++){if((i+1)==Nball){ work=work+cherche.substr(i,1);prop[i]=1;}else{work=work+".";prop[i]=3;} } // Réinitialiser solution(work,0); document.frm.sonmot.value="";document.frm.sonmot.focus(); } // On affiche la solution function solution(mot,lgn) { // On affiche les lettres sur la ligne lgn for(i=0;i<nblettres;i++){ if(mot.substr(i,1)=="."){ // un point document.frm ["L"+lgn+""+i].src="point.gif"; }else{ // une lettre document.frm ["L"+lgn+""+i].src=mot.substr(i,1)+".gif"; } } } // On compare sa proposition function comparer() { lui=document.frm.sonmot.value.toUpperCase(); if(lui.length!=nblettres){alert("Nombre de lettres incorrect");return true;} // Initialiser la table de travail stock=""; for(i=0;i<nblettres;i++){if(cherche.substr(i,1)==lui.substr(i,1)){prop[i]=1;}} for(i=0;i<nblettres;i++){ if(cherche.substr(i,1)==lui.substr(i,1)){ // Bien placé document.frm ["L"+nbcoups+""+i].src=lui.substr(i,1)+".gif"; stock=stock+lui.substr(i,1);prop[i]=1; }else{ trouve=0;stock=stock+"."; for(j=0;j<nblettres;j++){ // Mal placé ? if((trouve==0)&&(j!=i)&&(lui.substr(i,1)==cherche.substr(j,1))&&(prop[j]!=1)){ document.frm ["L"+nbcoups+""+i].src=lui.substr(i,1)+"m.gif";trouve=1;prop[j]=1; } } if(trouve==0){document.frm ["L"+nbcoups+""+i].src=lui.substr(i,1)+"n.gif";} } } tempo=""; for(i=0;i<nblettres;i++){prop[i]=0; if(work.substr(i,1)!="."){ tempo=tempo+work.substr(i,1); }else{ if(stock.substr(i,1)!="."){tempo=tempo+stock.substr(i,1);}else{tempo=tempo+".";} } } work=tempo; nbcoups++; document.frm.libnb.value="Il vous reste " + (nbcoupsmax-nbcoups) + " coups"; // A-t-il trouvé le mot ? if(lui==cherche){ alert("Bravo !"); if(confirm("Autre partie ?")==true){location.reload(true);} return true; } // A-t-il dépassé le nombre de coups maximum ? if(nbcoups>=nbcoupsmax){ alert("Perdu :(");solution(cherche,nbcoups); if(confirm("Autre partie ?")==true){location.reload(true);} return true; } lui=""; document.frm.sonmot.value="";document.frm.sonmot.focus(); solution(work,nbcoups); } </script> </head> <body onLoad="combinaison();"> <table border=1 cellpadding=0 cellspacing=0><form name="frm"> <tr><td>Quel est le mot de 8 lettres<br>parmi les <script language="JavaScript">document.write(nbmots);</script> disponibles ?</td></tr> <tr><td> <input type=text name="sonmot"> <u><a style="cursor:pointer;" onclick="comparer()" title="Vérifier">Vérifier</a></u> </td></tr> <tr><td> Saisissez un mot de 8 lettres,<br>sans lettre accentuée, cliquez<br> sur "Vérifier" pour le comparer.<br> <input type=text size=25 readonly=readonly name="libnb" value=""> </td></tr> <script language="javascript"> for(ligne=0;ligne<=nbcoupsmax;ligne++){ // Créer les lignes pour afficher les lettres document.write("<tr><td>"); for(i=0;i<nblettres;i++){document.write("<img src='rien.gif' name='L"+ligne+""+i+"'>");} document.write("</td></tr>"); } </script> </form> </table> </body> </html>
|
A vos claviers... Et creusez-vous bien les méninges...
DB77 le
16/08/2008 (3 397 hits) |
|
|