Section courante

A propos

Section administrative du site

Bien avant de concevoir des jeux d'arcades, des Pac-Man, Tetris et des City of Heroes, il faut savoir programmer des jeux simples et que tous le monde comprennent parfaitement. Un de ceux-ci est sans nulle doute le jeux de Mot Mystère dans lequel il faut trouvé dans une grille une liste de mots pour enfin trouver des lettres éparpillé correspondant au mot mystère. Voici de quoi devrait avoir l'air de Mot Mystère :

A l'aide du code source JavaScript suivant, vous trouverez la réponse que vous souhaitez :

  1. <HTML>
  2. <BODY>
  3. <script type="text/javascript" language="javascript">
  4. var HiddenX = new Array();
  5. var HiddenY = new Array();
  6. var HiddenI = 0;
  7. var MaGrille = new Array();
  8. var MaGrilleX = new Array();
  9. var MaGrilleY = new Array();
  10. var MaGrilleOk = new Array();
  11. var MaGrilleI = 0;
  12. var MaGrilleFinish = false;
  13. var MotCacheGrille = "";
  14. var NumberToChar = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
  15.                              "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
  16.                                     "U", "V", "W", "X", "Y", "Z", "AA","AB","AC","AD");
  17.  
  18. document.write("<TABLE><TR><TD VALIGN=TOP>");                          
  19. document.write("<TABLE>");
  20. for(J = 0;J < 31;J++) {
  21.  document.write("<TR>");
  22.  for(I = 0;I < 31;I++) {
  23.      document.write("<TD ID=T",NumberToChar[I],J,"></TD>");
  24.  } 
  25.  document.write("</TR>");
  26. }
  27. document.write("</TABLE>");
  28. document.write("<SPAN ID=CurrWord></SPAN><BR>");
  29. document.write("<INPUT TYPE=BUTTON VALUE='Effacer' ONCLICK='document.getElementById(\"CurrWord\").innerHTML=\"\";HiddenI=0;RefreshBoard();'>");
  30. document.write("<SPAN ID=StatusString></SPAN><BR>");
  31. document.write("</TD><TD>");
  32. document.write("<SPAN ID=WordString></SPAN><BR>");
  33. document.write("</TD></TR></TABLE>");
  34.  
  35. function PutButton(X,Y,Valeur,Color) {
  36.      document.getElementById("T"+NumberToChar[MaGrilleX[Y][X]-1]+(MaGrilleY[Y][X])).innerHTML="<INPUT TYPE=BUTTON ID="+"I"+NumberToChar[MaGrilleX[Y][X]-1]+(MaGrilleY[Y][X])+" VALUE='"+Valeur+"' "+(Color!=""?"STYLE='background-color : "+Color+"'":"")+" ONCLICK='CheckGrille("+(MaGrilleX[Y][X])+","+(MaGrilleY[Y][X])+")'>";
  37. }
  38.  
  39. function RefreshBoard() {
  40.      for(J=0;J<MaGrilleI;J++) if(!MaGrilleOk[J]) {
  41.           text=MaGrille[J];
  42.           for(I=0;I<text.length;I++) PutButton(I,J,text.charAt(I),"");
  43.      }
  44.      for(J=0;J<MaGrilleI;J++) if(MaGrilleOk[J]) {
  45.           text=MaGrille[J];
  46.           for(I=0;I<text.length;I++) PutButton(I,J,text.charAt(I),"#00FF00");
  47.      }
  48. }
  49.  
  50. function InitGrille() {
  51.    MaGrilleX[MaGrilleI]=new Array();
  52.    MaGrilleY[MaGrilleI]=new Array();
  53. }
  54.  
  55. function FinishGrille(text) {
  56.    document.getElementById("WordString").innerHTML+="<BR>"+text;
  57.    MaGrille[MaGrilleI]=text;
  58.    MaGrilleOk[MaGrilleI]=false;
  59.    MaGrilleI++;
  60. }
  61.  
  62. function AddButton(X,Y,I,Valeur) {
  63.      document.getElementById("T"+NumberToChar[X-1]+(Y)).innerHTML="<INPUT TYPE=BUTTON ID="+"I"+NumberToChar[X-1]+(Y)+" VALUE='"+Valeur+"' ONCLICK='CheckGrille("+(X)+","+Y+")'>";
  64.      MaGrilleX[MaGrilleI][I]=X;
  65.      MaGrilleY[MaGrilleI][I]=Y;
  66. }
  67.  
  68. function AddHorizontalWord(X,Y,text) {
  69.    InitGrille();
  70.    for(I=0;I < text.length;I++) AddButton(X+I,Y,I,text.charAt(I));
  71.    FinishGrille(text);
  72. }
  73.  
  74. function AddDiagonalHorizontalWord(X,Y,text) {
  75.    InitGrille();
  76.    for(I = 0;I < text.length;I++) AddButton(X+I,Y-I,I,text.charAt(I));
  77.    FinishGrille(text);
  78. }
  79.  
  80. function AddHorizontalReverseWord(X,Y,text) {
  81.    InitGrille();
  82.    for(I = 0;I < text.length;I++) AddButton(X-I,Y,I,text.charAt(I));
  83.    FinishGrille(text);
  84. }
  85.  
  86. function AddDiagonalHorizontalReverseWord(X,Y,text) {
  87.    InitGrille();
  88.    for(I = 0;I < text.length;I++) AddButton(X-I,Y-I,I,text.charAt(I));
  89.    FinishGrille(text);
  90. }
  91.  
  92.  
  93. function AddVerticalWord(X,Y,text) {
  94.    InitGrille();
  95.    for(I = 0;I < text.length;I++) AddButton(X,Y+I,I,text.charAt(I));
  96.    FinishGrille(text);
  97. }
  98.  
  99. function AddVerticalReverseWord(X,Y,text) {
  100.    InitGrille();
  101.    for(I = 0;I < text.length;I++) AddButton(X,Y-I,I,text.charAt(I));
  102.    FinishGrille(text);
  103. }
  104.  
  105. function AddDiagonalVerticalWord(X,Y,text) {
  106.    InitGrille();
  107.    for(I = 0;I < text.length;I++) AddButton(X+I,Y+I,I,text.charAt(I));
  108.    FinishGrille(text);
  109. }
  110.  
  111. function AddDiagonalVerticalReverseWord(X,Y,text) {
  112.    InitGrille();
  113.    for(I = 0;I < text.length;I++) AddButton(X-I,Y+I,I,text.charAt(I));
  114.    FinishGrille(text);
  115. }
  116.  
  117. function AddLetter(X,Y,text) {
  118.    document.getElementById("T"+NumberToChar[X-1]+(Y)).innerHTML="<INPUT TYPE=BUTTON ID="+"I"+NumberToChar[X-1]+(Y)+" VALUE='"+text+"' ONCLICK='CheckGrille("+(X)+","+Y+")'>";
  119. }
  120.  
  121. function AddChar(X,Y,Letter) {
  122.      document.getElementById("CurrWord").innerHTML=document.getElementById("CurrWord").innerHTML+Letter;
  123.       HiddenX[HiddenI]=X;
  124.       HiddenY[HiddenI]=Y;
  125.       HiddenI++;
  126. }
  127.  
  128. function CheckGrille(X,Y) {
  129.    CurrChar = document.getElementById("I"+NumberToChar[X-1]+Y).value;
  130.    AddChar(X,Y,CurrChar);
  131.    text = document.getElementById("CurrWord").innerHTML;
  132.    if(MaGrilleFinish && (MotCacheGrille==text)) {
  133.         document.getElementById("StatusString").innerHTML="Félicitation! Vous avez trouvé le mot caché!";
  134.    } else {
  135.         if(text.length>0) {
  136.              for(J=0;J<MaGrilleI;J++) {
  137.                      Ok = true;
  138.                   for(I=0;I<text.length;I++) {
  139.                             if((HiddenX[I]!=MaGrilleX[J][I])||(HiddenY[I]!=MaGrilleY[J][I])||(text.charAt(I)!=MaGrille[J].charAt(I))) {
  140.                               Ok=false;
  141.                               break;
  142.                          }
  143.                   }
  144.                   if((text.length==MaGrille[J].length)&& Ok) {
  145.                        for(I=0;I<text.length;I++) {
  146.                             document.getElementById("T"+NumberToChar[HiddenX[I]-1]+(HiddenY[I])).innerHTML="<INPUT TYPE=BUTTON ID="+"I"+NumberToChar[HiddenX[I]-1]+(HiddenY[I])+" VALUE='"+text.charAt(I)+"' STYLE='background-color : #00FF00' ONCLICK='CheckGrille("+(HiddenX[I])+","+(HiddenY[I])+")'>";
  147.                     }
  148.                     MaGrilleOk[J]=true;
  149.                     document.getElementById("WordString").innerHTML=document.getElementById("WordString").innerHTML.replace(">"+text+"<","><S>"+text+"</S><");
  150.                        document.getElementById("CurrWord").innerHTML="";
  151.                     HiddenI=0;
  152.                     break;
  153.                      } else {
  154.                          Ok = false;
  155.                   }
  156.              }
  157.         } else {
  158.                 Ok = false;
  159.         }
  160.         if(!Ok) document.getElementById("T"+NumberToChar[X-1]+(Y)).innerHTML="<INPUT TYPE=BUTTON ID="+"I"+NumberToChar[X-1]+(Y)+" VALUE='"+CurrChar+"' STYLE='background-color : #FFFF00' ONCLICK='CheckGrille("+(X)+","+(Y)+")'>";
  161.         else {
  162.                 Ok=true;
  163.              DebugI=0;
  164.                 for(J=0;J<MaGrilleI;J++) {
  165.                     Ok=Ok && MaGrilleOk[J];
  166.                  if(MaGrilleOk[J]) DebugI++;
  167.              }
  168.              if(Ok) {
  169.                        MaGrilleFinish = true;
  170.                     document.getElementById("StatusString").innerHTML="Grille terminer! Trouver le mot caché maintenant!";
  171.              } else {
  172.                        document.getElementById("StatusString").innerHTML=DebugI+"/"+MaGrilleI;
  173.              }
  174.              
  175.         }
  176.      }
  177. }
  178.  
  179. function FinishAllGrille(MotCache) {
  180.      document.getElementById("StatusString").innerHTML="0/"+MaGrilleI;
  181.      document.getElementById("WordString").innerHTML+="<BR>";
  182.      MotCacheGrille=MotCache;
  183. }
  184.  
  185. AddHorizontalReverseWord(11,11,"AGE");
  186. AddDiagonalVerticalReverseWord(10,9,"AME");
  187. AddDiagonalVerticalWord(4,3,"AMI");
  188. AddDiagonalVerticalWord(4,5,"AMOUR");
  189. AddVerticalWord(10,9,"ANGE");
  190. AddHorizontalWord(3,11,"BIBLE");
  191. AddHorizontalReverseWord(3,11,"BON");
  192. AddVerticalReverseWord(11,12,"CATHECHESE");
  193. AddHorizontalWord(6,3,"CIERGE");
  194. AddHorizontalWord(3,2,"COEUR");
  195. AddHorizontalWord(3,1,"CONFIANCE");
  196. AddDiagonalVerticalWord(3,1,"CONSERVE");
  197. AddVerticalWord(8,5,"CROIRE");
  198. AddHorizontalWord(4,8,"DIEU");
  199. AddDiagonalHorizontalWord(4,8,"DIME");
  200. AddVerticalWord(1,2,"EGLISE");
  201. AddDiagonalVerticalReverseWord(11,1,"ETRE");
  202. AddVerticalWord(7,6,"FEU");
  203. AddVerticalWord(10,3,"GLOIRE");
  204. AddDiagonalHorizontalReverseWord(5,6,"MARIE");
  205. AddHorizontalWord(3,9,"MESSE");
  206. AddDiagonalVerticalReverseWord(5,6,"MOINE");
  207. AddDiagonalVerticalReverseWord(9,1,"NAISSANCE");
  208. AddDiagonalVerticalReverseWord(5,3,"NOEL");
  209. AddDiagonalHorizontalWord(1,8,"PAPA");
  210. AddHorizontalReverseWord(7,10,"PARDON");
  211. AddHorizontalReverseWord(4,12,"PRIE");
  212. AddHorizontalWord(4,12,"PARTAGE");
  213. AddDiagonalHorizontalWord(6,12,"REEL");
  214. AddVerticalWord(2,1,"SAINT");
  215. AddVerticalReverseWord(9,7,"VIE");
  216. FinishAllGrille("MIRACLE");
  217.  
  218. AddLetter(1,1,"M");
  219. AddLetter(9,2,"I");
  220. AddLetter(3,3,"R");
  221. AddLetter(9,4,"A");
  222. AddLetter(7,4,"C");
  223. AddLetter(9,8,"L");
  224. AddLetter(11,2,"E");
  225. </script>
  226. </BODY>
  227. </HTML>


Dernière mise à jour : Mercredi, le 5 octobre 2011