欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

2048小游戏:全面解析并提供HTML、CSS、JavaScript源代码

最编程 2024-08-15 10:29:08
...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title> New Document </title> <meta name="Generator" content="EditPlus"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> </head> <style type="text/css"> *{ margin:0; padding:0; } #zuiwaibian{/*最外边div设置*/ width:400px; height:600px; background-color:#fce6ce; } #caidan{/*上边菜单设置*/ width:100%; height:150px; margin-top:6px; background-color:#a68c71; /* 设置字体样式 */ font-size:50px; text-align:center; line-height:150px; color:#fff; } #youxi{/*下边游戏界面设置*/ width:400px; height:400px; background:#c0af9d; margin-top:10px; } .model{ float:left; margin-left:8px; margin-top:8px; width:90px; height:90px; background-color:#cdc1b3; border-radius:5px; } </style> <body> <div id="zuiwaibian"> <div id="caidan">0</div> <div id="youxi"> <div id="a1" class="model"></div> <div id="a2" class="model"></div> <div id="a3" class="model"></div> <div id="a4" class="model"></div> <div id="b1" class="model"></div> <div id="b2" class="model"></div> <div id="b3" class="model"></div> <div id="b4" class="model"></div> <div id="c1" class="model"></div> <div id="c2" class="model"></div> <div id="c3" class="model"></div> <div id="c4" class="model"></div> <div id="d1" class="model"></div> <div id="d2" class="model"></div> <div id="d3" class="model"></div> <div id="d4" class="model"></div> </div> </div> </body> </html> <!--js代码--> <!--定义数据以及函数--> <script type="text/javascript"> //记录得分 var score=0; //将16个格子的id存储在二维数组a中 //记录上 var a=[['a1','a2','a3','a4'],['b1','b2','b3','b4'],['c1','c2','c3','c4'],['d1','d2','d3','d4']]; //记录下 var b=[['d4','d3','d2','d1'],['c4','c3','c2','c1'],['b4','b3','b2','b1'],['a4','a3','a2','a1']]; //记录左 var c=[['d1','c1','b1','a1'],['d2','c2','b2','a2'],['d3','c3','b3','a3'],['d4','c4','b4','a4']]; //记录右 var d=[['a4','b4','c4','d4'],['a3','b3','c3','d3'],['a2','b2','c2','d2'],['a1','b1','c1','d1']]; var xx=[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]; /*小方块对象,与放入盒子中的num*/ function create_num_color(kuai_object,num){ //var kaui_object;/*存放盒子对象*/ switch (num){ case 2://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#efe5db"; kuai_object.innerHTML="2"; kuai_object.style.color="#7a6d65"; kuai_object.style.fontSize="65px"; //kaui_object.style.fontFamily='STHupo';//字体 kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 4: //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#eddcbe"; kuai_object.innerHTML="4"; kuai_object.style.color="#7a6d65"; kuai_object.style.fontSize="65px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 8://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#f3b079"; kuai_object.innerHTML="8"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="65px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 16://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#f7925c"; kuai_object.innerHTML="16"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="60px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 32://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#f57656"; kuai_object.innerHTML="32"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="60px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 64://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#f4522c"; kuai_object.innerHTML="64"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="60px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 128://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#edce71"; kuai_object.innerHTML="128"; kuai_object.style.color="#7a6d65"; kuai_object.style.fontSize="45px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 256://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#e6d151"; kuai_object.innerHTML="256"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="45px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 512://ok //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#1200ff"; kuai_object.innerHTML="512"; kuai_object.style.color="#7a6d65"; kuai_object.style.fontSize="45px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 1024: //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#cc00ff"; kuai_object.innerHTML="1024"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="35px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 2048: //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#000000"; kuai_object.innerHTML="2048"; kuai_object.style.color="#ffffff"; kuai_object.style.fontSize="35px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; case 4096: //kaui_object=document.getElementById(kuai); kuai_object.style.backgroundColor="#000000"; kuai_object.innerHTML="4096"; kuai_object.style.color="#e504f3"; kuai_object.style.fontSize="35px"; kuai_object.style.textAlign="center"; kuai_object.style.lineHeight="98px"; break; } } //随机生成数字函数(‘2’或‘4’) function suiji(){ var flag_x=[];//定义一个空数组,记录空的小方块的x坐标 var flag_y=[];//定义一个空数组,记录空的小方块的y坐标 for (var i=0;i<4 ;i++ )//检查所有为空的小方块,并记录其下标 { for (var j=0;j<4 ;j++ ) { if(document.getElementById(a[i][j]).innerHTML==""){ flag_x.push(i); flag_y.push(j); } } } if(flag_x.length!=0){//当一个空的小方块都没有时,则游戏结束 //alert("Game over"); //return; //}else{ var r=[2,4]; var num_object=Math.floor(Math.random() * flag_x.length); var object=document.getElementById(a[flag_x[num_object]][flag_y[num_object]]); create_num_color(object,r[Math.floor(Math.random() * 2)]); return; } } /*清空小方块的内容*/ function qingkong(kuai_object){ kuai_object.style.backgroundColor="#cdc1b3";//空白时的颜色 kuai_object.innerHTML="";//清空数字 } function update_score(num){ document.getElementById("caidan").innerHTML=num; } //左 function remove_zuo(x,y,n){ //alert(x); //alert(x); //alert(y); n++; if(x==0){ return remove_zuo(x+parseInt((y+1)/4),(y+1)%4,n);// } if(x>3){ return n; }else{ var two=document.getElementById(c[x][y]); var one=document.getElementById(c[x-1][y]); if(one.innerHTML==""&&two.innerHTML!=""){//第二行不空,第一行空 create_num_color(one,parseInt(two.innerHTML)); qingkong(two); return remove_zuo(x-1,y,n);// } if(one.innerHTML!=""&&two.innerHTML!=""){//两行都不等于空 if(one.innerHTML==two.innerHTML&&xx[x-1][y]==0){ xx[x-1][y]=1; //score score=score+2*two.innerHTML; update_score(score); create_num_color(one,2*two.innerHTML); qingkong(two); return remove_zuo(x+parseInt((y+1)/4),(y+1)%4,n);// } } } return remove_zuo(x+parseInt((y+1)/4),(y+1)%4,n);// } //上 function remove_shang(x,y,n){ //alert(x); //alert(x); //alert(y); n++; if(x==0){ return remove_shang(x+parseInt((y+1)/4),(y+1)%4,n);// } if(x>3){ return n; }else{ var two=document.getElementById(a[x][y]); var one=document.getElementById(a[x-1][y]); if(one.innerHTML==""&&two.innerHTML!=""){//第二行不空,第一行空 create_num_color(one,parseInt(two.innerHTML)); qingkong(two); return remove_shang(x-1,y,n);// } if(one.innerHTML!=""&&two.innerHTML!=""){//两行都不等于空 if(one.innerHTML==two.innerHTML&&xx[x-1][y]==0){ xx[x-1][y]=1; //score score=score+2*two.innerHTML; update_score(score); create_num_color(one,2*two.innerHTML); qingkong(two); return remove_shang(x+parseInt((y+1)/4),(y+1)%4,n);// } } } return remove_shang(x+parseInt((y+1)/4),(y+1)%4,n);// } //右 function remove_you(x,y,n){ //alert(x); //alert(x); //alert(y); n++; if(x==0){ return remove_you(x+parseInt((y+1)/4),(y+1)%4,n);// } if(x>3){ return n; }else{ var two=document.getElementById(d[x][y]); var one=document.getElementById(d[x-1][y]); if(one.innerHTML==""&&two.innerHTML!=""){//第二行不空,第一行空 create_num_color(one,parseInt(two.innerHTML)); qingkong(two); return remove_you(x-1,y,n);// } if(one.innerHTML!=""&&two.innerHTML!=""){//两行都不等于空 if(one.innerHTML==two.innerHTML&&xx[x-1][y]==0){ xx[x-1][y]=1; //score score=score+2*two.innerHTML; update_score(score);