首页 > 语言 > JavaScript > 正文

jQuery制作可自定义大小的拼图游戏

2024-05-06 16:17:51
字体:
来源:转载
供稿:网友

这篇文章主要介绍了jQuery制作可自定义大小的拼图游戏的代码,非常的简单实用,虽然还只是局限于数字顺序的拼图,后续慢慢完善上图片,但还是分享给大家,有需要的小伙伴可以参考下。

我把大小限制在了3-10之间,实在闲的,或者有自虐倾向的可以试试改下。。

本来准备弄图片上去的,还没弄..

pintu.html

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>拼图</title> 
  6. <style type="text/css"
  7. #pt_main{ 
  8. margin:0 auto; 
  9. border:2px solid #000;} 
  10. #menu{ 
  11. text-align:center;} 
  12. #pt_main div{ 
  13. padding:0px; 
  14. margin:0px; 
  15. float:left; 
  16. line-height:200px; 
  17. font-size:100px; 
  18. text-align:center;} 
  19. #pt_main div:hover{ 
  20. cursor:pointer;} 
  21. .hui{ 
  22. background:#CCC;} 
  23. </style> 
  24.  
  25. <script src="http://code.jquery.com/jquery-latest.js"></script> 
  26. <script type="text/javascript"
  27. //div边框宽度 
  28. var border_w=2; 
  29. //div大小 
  30. var size=50; 
  31. //是否过关 
  32. var st=false
  33. //背景图片地址(功能还没写) 
  34. var imgurl=''
  35. //灰色块的位置 
  36. var hui=0; 
  37. //游戏宽高 
  38. var width=3; 
  39. var height=3; 
  40. $(function(){ 
  41. init(); 
  42. }); 
  43. //判断两个数字能不能交换 
  44. function ut_jh(a,b){ 
  45. if(Math.abs(a-b)==width){ 
  46. return true
  47. if(Math.abs(a-b)==1&& ut_line(a,b,width) ){ 
  48. return true
  49. return false
  50. //判断两个数字是否在同一行 
  51. function ut_line(a,b,width){ 
  52. if(parseInt(a/width)==parseInt(b/width)){ 
  53. return true
  54. }else
  55. return false;  
  56. //生成可交换的集合(可与灰色块交换的集合) 
  57. function ut_sc(a){ 
  58. //最多为4个 
  59. var li=new Array(); 
  60. var i=0; 
  61. if(a-width>=0){ 
  62. li[i++]=a-width; 
  63. if(a+width<=width*height-1){ 
  64. li[i++]=a+width;  
  65. if(ut_line(a,a-1,width) && a-1>=0){ 
  66. li[i++]=a-1;  
  67. if(ut_line(a,a+1,width) && a+1<=width*height-1){ 
  68. li[i++]=a+1;  
  69. //alert(a+'-length:'+li.length) 
  70. return li; 
  71. //块的点击事件 
  72. function pt_click(){ 
  73. if(!st){ 
  74. return false
  75. //点击块的索引 
  76. var index=get().index($(this)); 
  77.  
  78. if(ut_jh(hui,index)){ 
  79. jh(hui,index); 
  80.  
  81. //判断是否过关 
  82. pd(); 
  83.  
  84.  
  85. //两块交换 
  86. function jh(hui_,index_){ 
  87. //alert(hui+1+","+(index_+1)); 
  88. var list=get();//所有块 
  89. var h=list.eq(hui_);//灰色块 
  90. var d=list.eq(index_);//点击的块 
  91.  
  92. //交换样式 
  93. h.removeClass(); 
  94. d.addClass('hui'); 
  95. h.html(d.html()); 
  96. d.html(''); 
  97. hui=index_; 
  98.  
  99. //交换各自属性 
  100. tg=h.attr('tg'); 
  101. h.attr('tg',d.attr('tg')); 
  102. d.attr('tg',tg); 
  103.  
  104. function init(){ 
  105. //不能太小... 
  106. if(width<3||height<3){ 
  107. return false;  
  108. hui=width*height-1; 
  109. var pp=$("#pt_main"); 
  110. pp.html(''); 
  111. //创建并初始化 
  112. var k=width*size+border_w*width*2; 
  113. var g=height*size+border_w*height*2; 
  114. pp.css({'width':k,'height':g}); 
  115. for(i=0;i<width*height;i++){ 
  116. var n=$("<div>"+(i+1)+"</div>");  
  117. n.css({'width':size, 
  118. 'height':size, 
  119. border:border_w+'px solid #000'
  120. lineHeight:size+'px'
  121. fontSize:parseInt(size/3)+'px' 
  122. }); 
  123. if(imgurl!=''){ 
  124.  
  125. pp.append(n); 
  126. //alert(i) 
  127.  
  128. get().last().html(''); 
  129. get().last().addClass('hui'); 
  130. get().on('click',pt_click); 
  131.  
  132. //为每个块附加属性,记录当前的值 
  133. $("#pt_main div").each(function(index, element) { 
  134. $(element).attr('tg',index); 
  135. }); 
  136.  
  137.  
  138. dl(); 
  139. st=true
  140. //判断是否通过(当每个块的值与自身的下标对应) 
  141. function pd(){ 
  142. var b=true
  143. get().each(function(index, element) { 
  144. if($(element).attr('tg')!=index){ 
  145. b=false
  146. return false
  147.  
  148. }); 
  149. if(b){ 
  150. st=false
  151. alert("恭喜过关!"); 
  152. return true
  153. }else
  154. return false
  155. //获取集合 
  156. function get(){ 
  157. return $("#pt_main div"); 
  158. //打乱 
  159. function dl(){ 
  160. //打乱次数 
  161. var count=width*width*width; 
  162.  
  163. for(i =0;i<count;i++){ 
  164. //可交换集合 
  165. var li=ut_sc(hui); 
  166. var num=parseInt((li.length)*Math.random()); 
  167. jh(hui,li[num]); 
  168.  
  169. //初始化按钮的点击事件 
  170. function csh(){ 
  171. var dxv=$('#dx').val(); 
  172. if(!parseInt(dxv)){ 
  173. alert('请输入3-10之间的数字'); 
  174. $('#dx').val(''); 
  175. return false
  176. var v=parseInt(dxv); 
  177. if(v<3||v>10){ 
  178. alert('请输入3-10之间的数字'); 
  179. $('#dx').val(''); 
  180. return false
  181. width=v; 
  182. height=v; 
  183. init(); 
  184. </script> 
  185. </head> 
  186.  
  187. <body> 
  188. <div id='menu'
  189. 大小:<input id='dx' style="text-align:center;width:40px;"/> 
  190. <button onclick="csh()">初始化</button> 
  191. <button onclick="init()">刷新</button> 
  192. </div> 
  193. <div id="pt_main"
  194.  
  195. </div> 
  196.  
  197. </body> 
  198. </html> 

以上就是本文给大家分享的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选