Designed by Derf !
121 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

Jeux de l'été (et de 5)

Un jeu de Motus (mots de 8 lettres)





DB77
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...

Pour pouvoir écrire dans ce forum, identifiez-vous !

 Lire  18/08/08 17:12 de ilhamjalil
salut a tous je vx creer un formulaire contient deux ...
  • 18/08/08 19:54 de DB77 Pas la peine de poster 36 fois ta question ...
  • 19/08/08 10:58 de DB77 Mets \n à la place de <br> pour voir ;)
  •  Lire  16/08/08 14:51 de Didier
    Waouh ! Super jeu ! Merci Denis ! Un petit bug à s...
  • 16/08/08 15:33 de DB77 Merci Didier, en fait, il y avait aussi È, ...
  •  Lire  16/08/08 14:31 de flipper31
    bonjour , je debute pouvez vous m'aider en me disant...
  • 16/08/08 15:38 de DB77 Ceci est en javascript donc on peut l'utili...
  •   v1.3p © ASP-PHP.net 2002  

    DB77 le 16/08/2008 (3 397 hits)
    Didier Réservez votre place gratuite pour les Microsoft TechDays 2009 !!!
    Un serveur dédié Dedibox avec la licence Windows Server 2008 gratuite !!!

    MSDN fête ses 10 ans ! Gagnez 1 Nabaztag, 1 montre binaire, 1 console Xbox, 1 ordinateur ultra-portable EeePC, 1 HTC Diamond et bien d’autres cadeaux… !!!
    Au fil des news  
    [MAJ] [PHP] Un calendrier très complet -
    Remplacement de balises pour le PHP5 et modifications du script pour l'affichage des jours afin ...
    Magazines - Le n°113 de Programmez est disponible
    PHP - Compteur de visites (hit) paramétrable
    Amélioration du Search MOSS : Recherche avancée - Modification de la page de recherche avancée
    Dans la série des optimisations potentielles sur le moteur de recherche de MOSS, nous verrons cette ...
    Dreamweaver CS3 + Php + Mysql - Ajout-Modif-Suppression. Les fondamentaux Part-1
    Suite à de nombreuses questions sur le forum, je pense que ce sujet sur les comportements d'ajout, ...
    SharePoint et Silverlight - Premiers pas - Lecture de données SharePoint et intégration
    Silverlight et SharePoint sont deux technologies récentes et connaissant un essor significant. En ...
    Développement d'applications SharePoint - depuis une Workstation XP ou Vista
    Lorsque que l'on développe pour SharePoint, on se retrouve dans un dilemme auquel nous avons tous ...
    JavaScript - sudoky - jeux du sudoku en javascript
    Adobe - Creative Suite 4 en Français
    PHP - La 8ème édition du Forum PHP est lancée !
    Magazines - Le n°112 de Programmez est disponible
    PHP - Interpreteur de commande SQL en PHP
    Listes liées (dépendantes) : avec ou sans XMLHTTPR - Les délires «Ajax or not Ajax»
    Comme toujours, c'est à la suite d'un coup de pouce que je me suis décidé à faire ce tuto. Merci à ...
    Amélioration du Search MOSS : Les scopes - Quelques possibilités d'amélioration du Search
    Lorsqu'on installe le moteur de recherche de MOSS et qu'on le configure basiquement, on veut ...
    SharePoint - Lister les templates utilisés - Identifier les définitions utilisées par vos sites
    Un site SharePoint est créé à partir d'un modèle ou définition de site. Mais comment savoir après ...
    PowerShell - Profile avec la participation de mon ami Tigrou :)
    Adobe - Lancement de la CS4, tous à vos agendas !
    [MAJ] PHP - Fonctions de redimensionnement d'images - BD : redimensionner image + picto après upload
    Ajout de FONCTIONS de redimensionnement.
    PHP - Afficher une date mysql yyyy-mm-dd en dd-mm-yyyy
    PHP - Tchat PHP V2.1 sans base de donnée
    SharePoint et les statistiques d'utilisation - Comment obtenir des statistiques depuis SharePoint
    La mise en place de ferme SharePoint doit s'accompagner d'une notion de gouvernance. Cette notion ...
    Adobe - Nouvelles annonces Adobe sur le salon IBC 2008
    PHP - PHP TV emission 2 (septembre 2008)
    PHP - PDO ADMIN
    [MAJ] Inscription contrôlée à une NewsLetter ou Service - Abonnement avec confirmation et désabonnement
    Correction d'un point-virgule manquant (merci de m'avoir obligé à chercher JPierre) dans le module ...
    PHP - Premier lundi d'une semaine et d'une année
    JavaScript - Premier lundi d'une semaine et d'une année
    ASP - Premier lundi d'une semaine et d'une année
    Alphabet Radio et Code Morse - Alpha Zulu appelle Tango Charlie !
    Encoder-Décoder en "Alphabet Radio" ... "Alpha Zulu appelle Tango Charlie !" ou en Code Morse ... ...
    Filtrer les modèles de site SharePoint - Filtrer l'affichage des modèles de site SharePoint
    Je vous propose de découvrir à l'aide de cet article quels mécanismes peuvent vous permettent de ...
    ASP/PHP - Méthode de cryptage - par table de correspondance
    (ASP/PHP) Une méthode de cryptage de données par l'utilisation d'une "table de correspondance ...
    PHP - Listes liées (1 table) - version2
    JavaScript - Rendre Visible ou Invisible des éléments d'un form
    PHP - Listes liées (1 table) - version1
    JavaScript - Intercepter le click sur vidéo WMP ou flash SWF
    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, ...
    PowerShell - Extraire toutes les collections SharePoint en CSV
    PowerShell - Lister les collections pour une WebApp SharePoint
    PowerShell - Lister les utilisateurs d'un site SharePoint
    PowerShell - Connaître le code version de votre SharePoint
    Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
    Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
      Scripts : Scripting | ASP-PHP | ASP.net | Divers
      Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
    v3 © Didier 2003   
     

    Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
     TechNet ASP-magazine Groupes Utilisateurs Microsoft CodePPC Wygwam El Roubio DotNet Project MVP The Inquirer FR Codes Sources