joyme
2014-05-28 12:33:14
证
javascript实现html网页版的2048游戏源代码
在这里看到了很多有意思的代码。本着分享的精神把自己写的2048的代码也贴出来。当然本人是一个超级菜鸟,有些地方没有完善。欢迎各位大神解决。(界面很丑,不要介意)
支持触屏及电脑键盘操作(wasd四个按键)
index.html
<!DOCTYPE html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,target-densitydpi=high-dpi,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>2048</title> <style type="text/css"> table { table-layout: fixed } table tr td{ background-color: #D7CE80; border:#666666; font-size:48px; } </style> </head> <script type="text/javascript" src="jquery-1.11.0.js"></script> <script type="text/javascript" src="canvas.js"></script> <body> <div id="version"></div> <table cellspacing="5px" frame="border"> <tr> <td id="0"> </td> <td id="1"> </td> <td id="2"> </td> <td id="3"> </td> </tr> <tr> <td id="4"> </td> <td id="5"> </td> <td id="6"> </td> <td id="7"> </td> </tr> <tr> <td id="8"> </td> <td id="9"> </td> <td id="10"> </td> <td id="11"> </td> </tr> <tr> <td id="12"> </td> <td id="13"> </td> <td id="14"> </td> <td id="15"> </td> </tr> </table> <script type="text/javascript" src="setHeight.js"></script> <script type="text/javascript"> var startX = 0, startY = 0,d=-1; //touchstart事件 function touchSatrtFunc(evt) { try { evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 var touch = evt.touches[0]; //获取第一个触点 var x = Number(touch.pageX); //页面触点X坐标 var y = Number(touch.pageY); //页面触点Y坐标 //记录触点初始位置 startX = x; startY = y; } catch (e) { alert('touchSatrtFunc:' + e.message); } } //touchmove事件,这个事件无法获取坐标 function touchMoveFunc(evt) { try { evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 var touch = evt.touches[0]; //获取第一个触点 var x = Number(touch.pageX); //页面触点X坐标 var y = Number(touch.pageY); //页面触点Y坐标 //判断滑动方向 if((y-startY)>0&&Math.abs((y-startY)/(x-startX))>1) { d=0; } else if(y-startY<0&&Math.abs((y-startY)/(x-startX))>1) { d=1; } else if((x-startX)>0&&Math.abs((y-startY)/(x-startX))<1) { d=2; } else { d=3; } } catch (e) { alert('touchMoveFunc:' + e.message); } } //touchend事件 function touchEndFunc(evt) { try { evt.preventDefault(); //阻止触摸时浏览器的缩放、滚动条滚动等 if(d==0) { down();//下 } else if(d==1) { up();//上 } else if(d==2) { right();//右 } else if(d==3) { left();//左 } } catch (e) { alert('touchEndFunc:' + e.message); } } //绑定事件 function bindEvent() { document.addEventListener('touchstart', touchSatrtFunc, false); document.addEventListener('touchmove', touchMoveFunc, false); document.addEventListener('touchend', touchEndFunc, false); } //判断是否支持触摸事件 function isTouchDevice() { // document.getElementById("version").innerHTML = navigator.appVersion; document.createEvent("TouchEvent"); bindEvent(); //绑定事件 } document.onkeypress=function(evt) { var evt=window.event?window.event:evt; if (evt.keyCode=='119' ) { up();//上 } if(evt.keyCode=='115') { down();//下 } if(evt.keyCode=='100') { right(); } if(evt.keyCode=='97') { left(); } } window.onload = isTouchDevice; </script> </body> </html>
setHeight.js
// JavaScript Document $(document).ready( function(){ x=$(window).width(); y=$(window).height(); if(x<=y) { $("td").css("width",x/6) .css("height",x/6); } else { $("td").css("width",y/6) .css("height",y/6); } }); num=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0); i=Math.floor(Math.random()*16); num[i]=2; i=Math.floor(Math.random()*16); num[i]=2; strArr=num.toString(); ga(strArr); donum();
canvas.js
// JavaScript Document getArr=new Array(); function ga(str) { getArr = str.split(","); } function donum() { for(i=0;i<16;i++) { if(getArr[i]!=0) { document.getElementById(i).innerText=getArr[i]; } else { document.getElementById(i).innerText=""; } } } function randnum() { var num; for(j=0;j<16;j++) { if(getArr[j]!=0) { num++; } } if(num!=16) { while(1) { i=Math.floor(Math.random()*16); if(getArr[i]==0) { var rn=Math.ceil(Math.random()*10); if(rn>0&&rn<=6) { getArr[i]=2; } else if(rn>6&&rn<=9) { getArr[i]=4; } else { getArr[i]=8; } break; } } } donum(); } function down() { for(var num=12;num<=15;num++) { if(getArr[num]==getArr[num-4]) { getArr[num]=parseInt(getArr[num-4])+parseInt(getArr[num]); getArr[num-4]=0; if(getArr[num-8]==getArr[num-12]) { getArr[num-8]=parseInt(getArr[num-8])+parseInt(getArr[num-12]); getArr[num-12]=0; } } else if(getArr[num-4]==getArr[num-8]) { getArr[num-4]=parseInt(getArr[num-8])+parseInt(getArr[num-4]); getArr[num-8]=0; } else if(getArr[num-8]==getArr[num-12]) { getArr[num-8]=parseInt(getArr[num-12])+parseInt(getArr[num-8]); getArr[num-12]=0; } for(var j=num;j>=num-8;j=j-4) { if(getArr[j]==0) { for(var i=j-4;i>=0;i=i-4) { if(getArr[i]!=0) { getArr[j]=getArr[i]; getArr[i]=0; break; } } } } } donum(); randnum(); } function up() { for(var num=3;num>=0;num--) { if(getArr[num]==getArr[num+4]) { getArr[num]=parseInt(getArr[num+4])+parseInt(getArr[num]); getArr[num+4]=0; if(getArr[num+8]==getArr[num+12]) { getArr[num+8]=parseInt(getArr[num+8])+parseInt(getArr[num+12]); getArr[num+12]=0; } } else if(getArr[num+4]==getArr[num+8]) { getArr[num+4]=parseInt(getArr[num+8])+parseInt(getArr[num+4]); getArr[num+8]=0; } else if(getArr[num+8]==getArr[num+12]) { getArr[num+8]=parseInt(getArr[num+12])+parseInt(getArr[num+8]); getArr[num+12]=0; } for(var j=num;j<=num+8;j=j+4) { if(getArr[j]==0) { for(var i=j+4;i<=15;i=i+4) { if(getArr[i]!=0) { getArr[j]=getArr[i]; getArr[i]=0; break; } } } } } donum(); randnum(); } function right() { for(var num=15;num>=3;num=num-4) { if(getArr[num]==getArr[num-1]) { getArr[num]=parseInt(getArr[num-1])+parseInt(getArr[num]); getArr[num-1]=0; if(getArr[num-2]==getArr[num-3]) { getArr[num-2]=parseInt(getArr[num-2])+parseInt(getArr[num-3]); getArr[num-3]=0; } } else if(getArr[num-1]==getArr[num-2]) { getArr[num-1]=parseInt(getArr[num-2])+parseInt(getArr[num-1]); getArr[num-2]=0; } else if(getArr[num-2]==getArr[num-3]) { getArr[num-2]=parseInt(getArr[num-3])+parseInt(getArr[num-2]); getArr[num-3]=0; } for(var j=num;j>=num-2;j=j-1) { if(getArr[j]==0) { for(var i=j-1;i>=num-3;i=i-1) { if(getArr[i]!=0) { getArr[j]=getArr[i]; getArr[i]=0; break; } } } } } donum(); randnum(); } function left() { for(var num=0;num<=12;num=num+4) { if(getArr[num]==getArr[num+1]) { getArr[num]=parseInt(getArr[num+1])+parseInt(getArr[num]); getArr[num+1]=0; if(getArr[num+2]==getArr[num+3]) { getArr[num+2]=parseInt(getArr[num+2])+parseInt(getArr[num+3]); getArr[num+3]=0; } } else if(getArr[num+1]==getArr[num+2]) { getArr[num+1]=parseInt(getArr[num+2])+parseInt(getArr[num+1]); getArr[num+2]=0; } else if(getArr[num+2]==getArr[num+3]) { getArr[num+2]=parseInt(getArr[num+3])+parseInt(getArr[num+2]); getArr[num+3]=0; } for(var j=num;j<=num+2;j=j+1) { if(getArr[j]==0) { for(var i=j+1;i<=num+3;i=i+1) { if(getArr[i]!=0) { getArr[j]=getArr[i]; getArr[i]=0; break; } } } } } donum(); randnum(); }
演示地址:http://myway5.com/html5/2048
由最代码官方编辑于2016-10-16 10:41:32
猜你喜欢
请下载代码后再发表评论
相关代码
最近下载
最近浏览
onemee LV36
7月1日
meilanrourou LV3
6月24日
7456321 LV1
4月22日
微信网友_6793785677565952 LV1
2023年12月25日
去死吧aaa LV1
2023年6月20日
微信网友_6508807560073216
2023年6月7日
暂无贡献等级
entity_bn LV1
2023年5月15日
微信网友_6467998946840576 LV2
2023年5月9日
理工铝孩 LV1
2022年12月20日
cxkkkkk LV1
2022年12月20日