首页 > 语言 > JavaScript > 正文

js+html5实现可在手机上玩的拼图游戏

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

这篇文章主要介绍了js+html5实现可在手机上玩的拼图游戏,涉及javascript结合html5进行图形操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了js+html5实现可在手机上玩的拼图游戏。分享给大家供大家参考。具体如下:

手机版的拼图。pc上用Chrome 或者 Firefox

 

 
  1. var R=(function(){ 
  2. /*右边菜单*/ 
  3. function fa(){ 
  4. if(mo.style.right!='0px'){ 
  5. mo.style.right='0px'
  6. mco.rcss('','cmck'); 
  7. }else
  8. mo.style.right='-100px'
  9. mco.rcss('cmck',''); 
  10. on(mco,fa); 
  11. //设置全局常量 
  12. var to=doc.querySelector('.pzuo'),tmid,r_r; 
  13. function fb(el,i){ 
  14. on(el,function(){ 
  15. if(i==3){ 
  16. location.reload(); 
  17. }else if(i==0){ 
  18. if(_gj.length > 0){ 
  19. localStorage['ptgj']=_gj.join(','); 
  20. ui.success('保存成功!'); 
  21. }else
  22. ui.error('没有轨迹可保存!'); 
  23. }else if(i==2){ 
  24. if(_zz){ 
  25. to.style.top='-50px'
  26. this.innerHTML='制作拼图'
  27. _zz=false
  28. if(_zp > 0){ 
  29. fc6(false); 
  30. }else if(_dl){ 
  31. to.style.top='0px'
  32. this.innerHTML='取消'
  33. _zz=true
  34. if(_zp > 0){ 
  35. fc6(true); 
  36. }else
  37. location.href='/login.php?cback='+location.href; 
  38. }else if(i==1){ 
  39. sio.style.display='block'
  40. fa(); 
  41. clearTimeout(tmid); 
  42. tmid=setTimeout(function(){ 
  43. sio.style.display='none'
  44. },2500); 
  45. }else if(i==4){ 
  46. if(_dl){ 
  47. location.href='top.php?my=1'
  48. }else
  49. location.href='/login.php?cback=http://m.yxsss.com/apps/pt.php'
  50. }else if(i==5){ 
  51. location.href='/'
  52. }else if(i==6){ 
  53. location.href='top.php'
  54. }); 
  55. var lis=doc.querySelectorAll('.menu li'); 
  56. for(var i=0;i<lis.length;i++){ 
  57. fb(lis[i],i); 
  58. var upico=A.$('upic'),imgo=new Image(),upe=0,rsrc='',rl=3,rh=3,rsx=[],rem=null
  59. function fc(el,i){ 
  60. on(el,function(){ 
  61. if(mo.style.right=='0px'){ 
  62. fa(); 
  63. if(_zp < i){ 
  64. ui.error(['请选择图片!','','','请打乱板块的顺序'][_zp]); 
  65. return ; 
  66. if(el.className.indexOf('dp')==-1){ 
  67. return ; 
  68. var farr=[ 
  69. function(){ 
  70. var tm=new Date().getTime(); 
  71. if(tm - upe < 3000){ 
  72. ui.error('若不能选择图片,请用浏览器打开本页面。',3000); 
  73. upe=tm; 
  74. }, 
  75. function(){ 
  76. fc3(true); 
  77. }, 
  78. function(){ 
  79. var i=rand(0,_l*_h -1); 
  80. fc5.call(po.children[i],i); 
  81. }, 
  82. function(){ 
  83. _zp=4; 
  84. fc1(); 
  85. fc7(); 
  86. }, 
  87. function(){ 
  88. fcv(); 
  89. ]; 
  90. farr[i](); 
  91. }); 
  92. function fcv(){ 
  93. A.aj('../do.php','type=pts&hshu='+rh+'&lshu='+rl+'&sxu='+rsx,function(da){ 
  94. if(da.ztai){ 
  95. ui.success('拼图制作成功,马上邀请好友来挑战吧!',3600); 
  96. setTimeout(function(){ 
  97. location.href='index.php?id='+da.id; 
  98. },5000); 
  99. },'json'); 
  100. var rfc7=true
  101. function fc7(){ 
  102. for(var i=0;i<50;i++){ 
  103. yds(rand(37,40)); 
  104. if(rfc7){ 
  105. pts(); 
  106. function fc1(){ 
  107. for(var i=0;i<=_zp;i++){ 
  108. zps[i].rcss('','dp'); 
  109. if(_zp > 3){ 
  110. for(var i=0;i<3;i++){ 
  111. zps[i].rcss('dp',''); 
  112. upico.style.display='none'
  113. var zps=doc.querySelectorAll('.pzuo li'); 
  114. for(var i=0;i<zps.length;i++){ 
  115. fc(zps[i],i); 
  116. function fc2(da){ 
  117. if(_zp==0){ 
  118. rsrc=da; 
  119. _zp=1; 
  120. fc1(); 
  121. fc3(true); 
  122. }else
  123. _img=rsrc=da; 
  124. pts(); 
  125. fc5.call(po.children[_k]); 
  126. var f3o=doc.querySelector('.pwh'),f3o1=doc.querySelector('.pwh1 a'); 
  127. on(f3o1,function(){ 
  128. fc3(false); 
  129. }) 
  130. function fc3(z){ 
  131. if(z){ 
  132. f3o.style.display='block'
  133. setTimeout(function(){ 
  134. f3o.style.opacity=1; 
  135. },30); 
  136. }else
  137. var h=doc.querySelector('.pwhh').value,l=doc.querySelector('.pwhl').value; 
  138. if(h < 3 || h > 10){ 
  139. ui.error('行数只能在 3 - 10 之间'); 
  140. return false
  141. if(l < 3 || l > 10){ 
  142. ui.error('列数只能在 3 - 10 之间'); 
  143. return false
  144. rl=parseInt(l); 
  145. rh=parseInt(h); 
  146. f3o.style.opacity=0; 
  147. setTimeout(function(){ 
  148. f3o.style.display='none'
  149. },300); 
  150. fc4(); 
  151. function fc4(){ 
  152. for(var i=0;i<rl*rh;i++){ 
  153. rsx.push(i); 
  154. fc6(true); 
  155. _zp=3; 
  156. fc1(); 
  157. fc5.call(po.children[0],0); 
  158. //交换数据 
  159. function fc6(w){ 
  160. if(w){ 
  161. r_r=[_l,_h,_img,_k,_sx1]; 
  162. _sx1=rsx; 
  163. _img=rsrc; 
  164. _l=rl; 
  165. _h=rh; 
  166. _k=_rk; 
  167. }else
  168. _sx1=r_r[4]; 
  169. _img=r_r[2]; 
  170. _l=r_r[0]; 
  171. _h=r_r[1]; 
  172. _k=r_r[3]; 
  173. pts(); 
  174. function fc5(i){ 
  175. if(rem){ 
  176. rem.style.display='block'
  177. _sx1[_rk]=_rk; 
  178. _rk=i; 
  179. _k=_rk; 
  180. _sx1[_k]=false
  181. this.style.display='none'
  182. rem=this
  183. //上传图片 
  184. upico.onchange=function(){ 
  185. var f=this.files[0]; 
  186. if(!f){ 
  187. return false
  188. var ext=f.name.match(//.(png|jpg|gif)$/i); 
  189. if(f.type.match('image.*') || ext){ 
  190. var r = new FileReader(); 
  191. r.onload = function(){ 
  192. var ida=this.result; 
  193. if(f.type==''){ 
  194. ida=ida.replace('data:','data:image/'+ext[1].replace('jpg','jpeg')+';'); 
  195. imgo.setAttribute('src',ida); 
  196. }; 
  197. r.readAsDataURL(f); 
  198. }else
  199. ui.error('请选择正确的图片格式(png、jpg、gif)'); 
  200. imgo.onload=function(){ 
  201. var rc = A.$('canvas'); 
  202. var ct = rc.getContext('2d'); 
  203. var w=300; 
  204. rc.width=w; 
  205. rc.height=w; 
  206. ct.drawImage(imgo,0,0,w,w); 
  207. A.aj('../do.php','type=ptpic&pda='+encodeURIComponent(rc.toDataURL('png')),function(da){ 
  208. if(da.ztai){ 
  209. fc2(da.src); 
  210. }else
  211. ui.error(da.msg); 
  212. },'json'); 
  213. return {'fc5':fc5}; 
  214. })(); 

 

 
  1. (function(win,doc){ 
  2. var ao = doc.querySelector('.pwap'), 
  3. po = doc.querySelector('.pbd'), 
  4. mo = doc.querySelector('.menu'), 
  5. mco = doc.querySelector('.menu .cm'), 
  6. sio = doc.querySelector('.pimg'), 
  7. sbdo = doc.querySelector('.sbd'); 
  8. var _t='ontouchstart' in doc,_h=0,_l=0,_k=0,_sx1=[],_sx2=[],_img='',_wh=0,_gj=[],_zp=0,_rk=0,_zz=false,_dl=DL; 
  9. //屏幕大小或者旋转 改变拼图大小 
  10. function ini(){ 
  11. var w=Math.min(win.innerWidth,h=win.innerHeight); 
  12. sbdo.style.width=win.innerWidth+'px'
  13. sbdo.style.height=win.innerHeight+'px'
  14. _wh=w*0.9; 
  15. ao.style.width=ao.style.height=_wh+'px'
  16. ao.style.marginTop=(win.innerHeight - w*0.9)*0.5+'px'
  17. if(_h && _l){ 
  18. pts(); 
  19. win.addEventListener('norientationchange' in win ? 'orientationchange' : 'resize' , ini, false); 
  20. ini(); 
  21. function on(el,fun){ 
  22. if(_t){ 
  23. A.on(el,'touchstart',fun); 
  24. }else
  25. A.on(el,'click',fun); 
  26. function rand(n,m){ 
  27. return Math.round(Math.random()*(m-n)+n); 
  28. //阻止默认动作 
  29. win.addEventListener('touchmove'function(e){ 
  30. e.preventDefault(); 
  31. },false); 
  32. function pts(){ 
  33. po.innerHTML=''
  34. _sx2=[]; 
  35. var h=1/_h*100,w=1/_l*100; 
  36. _sx1.forEach(function(v,i){ 
  37. if(_zz && _zp < 4){v=i}; 
  38. if(v!==false){ 
  39. var ls=i%_l,ts=Math.floor(i/_l); 
  40. ls=ls>0?ls*100/_l:0; 
  41. ts=ts>0?ts*100/_h:0; 
  42. var li=v%_l,ti=Math.floor(v/_l); 
  43. li=li>0?li*_wh/_l:0; 
  44. ti=ti>0?ti*_wh/_h:0; 
  45. var p=A.$('<p style="width:' + w + '%; height:' + h + '%; left:' + ls + '%; top:' + ts + '%;"><img src="'+_img+'" width="'+_wh+'" style="left:-' + li + 'px; top:-' + ti + 'px;"></p>'); 
  46. p.k=i; 
  47. yd(p); 
  48. _sx2.push(p); 
  49. po.appendChild(p); 
  50. }else
  51. _k=i; 
  52. _sx2.push(false); 
  53. }); 
  54. if(_zz && _zp < 4){ 
  55. R.fc5.call(po.children[_rk],_rk); 
  56. function yd(t){ 
  57. if(_zz && _zp < 4){ 
  58. on(t,yd2); 
  59. }else
  60. on(t,yd1); 
  61. function yd1(){ 
  62. var k=this.k; 
  63. if(_k-k==1 && k%_l <_l -1){ 
  64. yds(39); 
  65. }else if(_k-k==-1 && k%_l > 0){ 
  66. yds(37); 
  67. }else if(_k-k==_l){ 
  68. yds(40); 
  69. }else if(k-_k==_l){ 
  70. yds(38); 
  71. if(!_zz){ 
  72. ydd(); 
  73. function ydd(){ 
  74. var c=true
  75. _sx1.forEach(function(i,v){ 
  76. if(v!==false && i!=v){ 
  77. c=false
  78. }); 
  79. if(c){ 
  80. ui.confirm('您经过'+_gj.length+'步,挑战成功!<br>提交成绩到排行榜?',function(rt){ 
  81. if(rt){ 
  82. rtsu(); 
  83. }); 
  84. function rtsu(){ 
  85. A.aj('../do.php','type=ptrt&ct='+_gj.join(',')+'&cts='+_gj.length+'&pid='+_pid,function(da){ 
  86. if(da.ztai){ 
  87. ui.success('保存成功!'); 
  88. setTimeout(function(){ 
  89. location.href='top.php?id='+_pid; 
  90. },3000); 
  91. }else
  92. location.href='/login.php?cback='+location.href+'#1'
  93. },'json'); 
  94. (function(){ 
  95. var mp=location.href.match(/#1/); 
  96. if(mp){ 
  97. A.aj('../do.php','type=ptrto',function(da){ 
  98. if(da.ztai){ 
  99. ui.success('保存成功!'); 
  100. setTimeout(function(){ 
  101. location.href='top.php?id='+_pid; 
  102. },3000); 
  103. },'json'); 
  104. })(); 
  105. function yd2(){ 
  106. R.fc5.call(this,this.k); 
  107. function yds(n){ 
  108. if(n==37){ 
  109. if(_k%_l < _l - 1){ 
  110. _sx2[_k + 1].style.left=_k%_l*100/_l+'%'
  111. chge(_k + 1); 
  112. _gj.push(n); 
  113. }else if(n==38){ 
  114. if(_k < (_h-1)*_l){ 
  115. var nk=parseInt(_k) + parseInt(_l); 
  116. _sx2[nk].style.top=Math.floor(_k/_l)*100/_h+'%'
  117. chge(nk); 
  118. _gj.push(n); 
  119. }else if(n==39){ 
  120. if(_k%_l > 0){ 
  121. _sx2[_k - 1].style.left=_k%_l*100/_l+'%'
  122. chge(_k - 1); 
  123. _gj.push(n); 
  124. }else if(n==40){ 
  125. if(_k >= _l){ 
  126. _sx2[_k - _l].style.top=Math.floor(_k/_l)*100/_h+'%'
  127. chge(_k - _l); 
  128. _gj.push(n); 
  129. function chge(k){ 
  130. _sx1[_k]=_sx1[k]; 
  131. _sx1[k]=false
  132. _sx2[_k]=_sx2[k]; 
  133. _sx2[k]=false
  134. _sx2[_k].k=_k; 
  135. _k=k; 
  136. var _pid=1; 
  137. function lda(){ 
  138. var g=location.href.match(/id=(/d+)/) || [1,1]; 
  139. _pid=g[1]; 
  140. A.aj('../do.php?id='+g[1],'type=getpt',function(da){ 
  141. _sx1=eval('['+da.sxu+']'); 
  142. _img=da.src; 
  143. _h=da.hshu; 
  144. _l=da.lshu; 
  145. _k=_h*_l-1; 
  146. sio.innerHTML='<img src="'+_img+'">'
  147. pts(); 
  148. },'json'
  149. lda(); 
  150. })(window,document); 

希望本文所述对大家的javascript程序设计有所帮助。

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

图片精选