1. <html>
  2. <head>
  3. <title> Taquin </title>
  4. <script language="JavaScript">
  5. /*
  6. - fonction papillon(a,b)
  7. attribution d'une image à une case du tableau
  8. - fonction numero_id(a,b)
  9. attribution d'un id à une case du tableau
  10. - fonction proximite(colonne,ligne)
  11. verification si la case cliquée est à proximité de la case vide
  12. renvoi 1 si le vide et l'image sont sur la même colonne ou
  13. 2 si le vide et l'image sont sur la même ligne , sinon 0
  14. - fonction echanger (colonne,ligne)
  15. echange de l'image de la case cliquée et de la case vide
  16. - fonction cliquer(colonne,ligne)
  17. evenement click sur une image
  18. - fonction onMelange( F )
  19. melanger les images un peu 1, moyennement 2, beaucoup 3, on deplace la case vide
  20. - fonction Hazard (colonne,ligne)
  21. randomization de onMelange()
  22. sortie 0 pas de deplacement, haut 1 ,bas 2 , droite 3 , gauche 4
  23. */
  24. var limiteX = 3; //colonnes 0 à limiteX
  25. var limiteY = 3; //lignes 0 à limiteY
  26. var vide = new Array(limiteX,limiteY);//position de la case vide
  27. //le reseau de cases est fixe
  28. //les images sont mobiles et attribuées temporairement à une case
  29. //attribution d'une image à une case du tableau
  30. function papillon(a,b){
  31. var morceau = (a+1)+b*4;
  32. var uneImage = "papill" + morceau + ".JPG";
  33. return uneImage;
  34. }
  35. //attribution d'un id à une case du tableau
  36. function numero_id(a,b){
  37. var nb = eval( (b+a)+a*4)
  38. return nb;
  39. }
  40. //verification si la case cliquée est à proximité de la case vide renvoi 1 ou 2 si oui, 0 si non
  41. function proximite(colonne,ligne){
  42. if (vide[0] == colonne) {
  43. if ( vide[1] == eval( ligne + 1) || vide[1] == eval( ligne - 1)) {
  44. return 1; //le vide et l'image sont sur la même colonne
  45. }
  46. else {
  47. return 0;
  48. }
  49. }
  50. else {
  51. if (vide[1] == ligne) {
  52. if ( vide[0] == eval( colonne + 1) || vide[0] == eval( colonne - 1)) {
  53. return 2;//le vide et l'image sont sur la même ligne
  54. }
  55. else {
  56. return 0;
  57. }
  58. }
  59. else {
  60. return 0;
  61. }
  62. }
  63. }
  64. //echange de l'image de la case cliquée et de la case vide
  65. function echanger (colonne,ligne){
  66. var source = document.getElementById(numero_id(colonne,ligne)).src;
  67. var neant = document.getElementById(numero_id(vide[0],vide[1])).src;
  68. document.getElementById(numero_id(colonne,ligne)).src = neant;
  69. document.getElementById(numero_id(vide[0],vide[1])).src = source;
  70. vide[0] = colonne;
  71. vide[1] = ligne;
  72. }
  73. //evenement click sur une image
  74. function cliquer(colonne,ligne){
  75. var p = proximite(colonne,ligne) ;
  76. if ( p == 0) {
  77. window.alert("Mouvement impossible");
  78. }
  79. else {
  80. echanger(colonne,ligne);
  81. };
  82. }
  83. //melanger les images un peu 1, moyennement 2, beaucoup 3, on deplace la case vide
  84. function onMelange( F ) {
  85. for (var i= 1 ; i<= parseInt(F) ; i++){
  86. var Direction = '0';
  87. var Cx ;
  88. var Cy ;
  89. while ( Direction == '0') {
  90. Direction = Hazard( vide[0] , vide[1] );
  91. }
  92. switch (Direction) {
  93. case '1': //deplacer le vide vers le haut
  94. Cx = vide[0];
  95. Cy =vide[1]-1;
  96. break;
  97. case '2': //deplacer le vide vers le bas
  98. Cx = vide[0];
  99. Cy =vide[1]+1;
  100. break;
  101. case '3': //deplacer le vide vers la droite
  102. Cx = vide[0]+1;
  103. Cy =vide[1];
  104. break;
  105. case '4': //deplacer le vide vers la gauche
  106. Cx = vide[0]-1;
  107. Cy =vide[1];
  108. break;
  109. } ;
  110. echanger(Cx,Cy);
  111. }
  112. }
  113. //randomization de onMelange
  114. //valeurs colonne et ligne incluses dans 0,1,2,3
  115. function Hazard (colonne,ligne) {
  116. var Decision = '0'; // 0 pas de deplacement, haut 1 ,bas 2 , droite 3 , gauche 4
  117. var R = Math.floor(Math.random() * 4 ) +1 ;
  118. if ( R ==1 ){ Decision = '1';}
  119. else {
  120. if ( R ==2 ){ Decision = '2';}
  121. else {
  122. if ( R ==3 ){ Decision = '3';}
  123. else {
  124. Decision = '4';
  125. }
  126. } }
  127. switch (Decision){ //verification de la possibilite de deplacement selon position
  128. case '1' :
  129. if (ligne == 0){Decision = '0';};//deplacement vers le haut impossible
  130. break;
  131. case '2' :
  132. if (ligne == limiteY){Decision = '0';};//deplacement vers le bas impossible
  133. break;
  134. case '3' :
  135. if (colonne == limiteX){Decision = '0';};//deplacement vers la droite impossible
  136. break;
  137. case '4' :
  138. if (colonne == 0){Decision = '0';};//deplacement vers la gauche impossible
  139. break;
  140. }
  141. return Decision;
  142. }
  143. </script>
  144. </head>
  145. <body>
  146. <form>
  147. <table>
  148. <script language="JavaScript">
  149. for (var i =0 ; i<=limiteX ; i++){
  150. document.write(" <tr> ");
  151. for (var j=0 ; j<=limiteY ; j++){
  152. var LeMorceau = papillon(j,i) ;
  153. document.write("<td > <img id="+numero_id(i,j)+" src=' "+LeMorceau+" ' onClick='javascript:cliquer("+i+","+j+")' > </td>");
  154. }
  155. document.write(" </tr> </br>");
  156. }
  157. </script>
  158. </table></br>
  159. <p> Choisir la difficult&eacute </p>
  160. <select name="choix" >
  161. <option value='30'> facile </option>
  162. <option value='45'> moyen </option>
  163. <option value='60'> difficile </option>
  164. </select>
  165. <input type="button" value="Valider" onClick="javascript:onMelange(choix.value)"/>
  166. </form>
  167. </body>
  168. </html>

Taquin Game html javascript