javascript拼图游戏

本文介绍了一个基于HTML和JavaScript实现的拼图游戏,支持不同难度级别的选择,并记录游戏时间和步数。游戏采用表格布局,通过键盘操作移动空白块来完成拼图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拼图游戏,在ie7 ,火狐,谷歌 测试通过。

HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server">     <title>无标题页</title>     <script type="text/javascript">         var mapBlock=3; //3 * 3 个单元格         var mapWH=300;  //地图的大小         var tabobj;         var imgsrc="http://i3.6.cn/cvbnm/35/b7/8f/4e78358bc9f1b80a62a749d04bf409d8.jpg";                  var backgroundPositionArr;         function createMap()         {             backgroundPositionArr=new Array();             document.getElementById("imgid").src=imgsrc;             tabobj=document.createElement("table");             tabobj.style.width=mapWH+"px";             tabobj.style.height=mapWH+"px";                          tabobj.border="0";             tabobj.cellspacing="0";             tabobj.style.backgroundColor="rgb(223,223,223)";             var tbodyobj=document.createElement("tbody");                          for(var i=0;i<mapBlock;i++)             {                 var trobj=document.createElement("tr");                                  for(var j=0;j<mapBlock;j++)                 {                     var tdobj=document.createElement("td");                     tdobj.id=i+"_"+j                     if(!(i==mapBlock-1 && j==mapBlock-1))                     {                         tdobj.style.backgroundImage="url("+imgsrc+")";                         tdobj.style.backgroundRepeat="no-repeat";                         tdobj.style.backgroundPosition=(-j)*(mapWH/mapBlock)+"px "+(-i)*(mapWH/mapBlock)+"px";                         backgroundPositionArr.push((-j)*(mapWH/mapBlock)+"px "+(-i)*(mapWH/mapBlock)+"px");                     }                                        var txt=document.createTextNode(" ");                     tdobj.appendChild(txt);                                          trobj.appendChild(tdobj);                 }                                  tbodyobj.appendChild(trobj);             }                          tabobj.appendChild(tbodyobj);                          document.getElementById("map_div").appendChild(tabobj);             randomMap();             setMessageDivSize();             startDate();             nowDate();         }         function setMessageDivSize()         {             document.getElementById("message_div").style.width="180px";             document.getElementById("message_div").style.height=document.getElementById("map_div").offsetHeight-2+"px";         }         function startDate()         {             document.getElementById("startDate").value=new Date().toLocaleTimeString();         }         function nowDate()         {             document.getElementById("nowDate").value=new Date().toLocaleTimeString();             setTimeout("nowDate()",1000);         }         function yxbs()         {             document.getElementById("yxbs").value=document.getElementById("yxbs").value-0+1;         }                  function keyDown(e)         {             var keyvalue=e.keyCode;             if(keyvalue==38)   //             {                 blockMove(1,0);             }             else if(keyvalue==39)  //             {                 blockMove(0,-1);             }             else if(keyvalue==40)   //             {                 blockMove(-1,0);             }             else if(keyvalue==37) //  左             {                 blockMove(0,1);             }         }         function blockMove(x,y)         {             var blockx=-1;             var blocky=-1;             for(var i=0;i<mapBlock;i++)             {                 for(var j=0;j<mapBlock;j++)                 {                     if(document.getElementById(i+"_"+j).style.backgroundImage=="")                     {                         blockx=i;                         blocky=j;                         break;                     }                 }                 if(blockx!=-1 && blocky!=-1)                     break;             }             if(blockx+x>mapBlock-1 || blockx+x<0 || blocky+y>mapBlock-1 || blocky+y<0)                 return;             else             {                 document.getElementById(blockx+"_"+blocky).style.backgroundImage="url("+imgsrc+")";                 document.getElementById(blockx+"_"+blocky).style.backgroundPosition=document.getElementById((blockx+x)+"_"+(blocky+y)).style.backgroundPosition;                 document.getElementById((blockx+x)+"_"+(blocky+y)).style.backgroundImage="";                 isWin();                 yxbs();             }         }         function randomMap()         {             var randomarr=new Array();             var maparr=new Array();             for(var i=0;i<mapBlock*mapBlock-1;i++)             {                 randomarr[i]=i;             }             for(var i=mapBlock*mapBlock-2;i>=0;i--)             {                 var a=Math.round(Math.random()*i);                 maparr.push(randomarr[a]);                                  randomarr.splice(a,1);             }             for(var i=0;i<mapBlock;i++)             {                 for(var j=0;j<mapBlock;j++)                 {                     if(!(i==mapBlock-1 && j==mapBlock-1))                     {                         document.getElementById(i+"_"+j).style.backgroundPosition=backgroundPositionArr[maparr.pop()];                     }                 }             }         }         function isWin()         {             var k=0;             var iswin=false;             for(var i=0;i<mapBlock;i++)             {                 for(var j=0;j<mapBlock;j++)                 {                     if(!(i==mapBlock-1 && j==mapBlock-1))                     {//alert(document.getElementById(i+"_"+j).style.backgroundPosition+"  == "+backgroundPositionArr[k]);                         if(document.getElementById(i+"_"+j).style.backgroundPosition==backgroundPositionArr[k])                         {                             iswin=true;                         }                         else                         {                             iswin=false;                             break;                         }                         k++;                     }                 }                 if(iswin==false)                     break;             }             if(iswin)             {                 alert("恭喜你赢了!");                 window.location.href=window.location.href;             }         }         function setGameNan()         {             document.getElementById("map_div").removeChild(tabobj);                          mapBlock=document.getElementById("yxn").options[document.getElementById("yxn").selectedIndex].value-0;             createMap();             tabobj.focus();         }     </script> </head> <body onload="createMap()" onkeydown="keyDown(event)"  style="font-size:10pt;">     <form id="form1">         <center>             <br>             <table>                 <tr>                     <td>                         <div id="map_div" style="border:rgb(231,24,220) solid 1px">                         </div>                     </td>                     <td>                         <div id="message_div" style="border:rgb(231,24,220) solid 1px" align="center">                             <br><font color="red"><b>拼图游戏</b></font><br>                             开始时间:<input type="text" id="startDate" readonly style="width:80px"><br>                             现在时间:<input type="text" id="nowDate" readonly style="width:80px"><br>                             游戏步数:<input type="text" id="yxbs" readonly value="0" style="width:80px"><br>                             游戏难度:<select id="yxn" style="width:86px" onchange="setGameNan()">                                         <option value="3">3 * 3</option>                                         <option value="4">4 * 4</option>                                         <option value="5">5 * 5</option>                                         <option value="6">6 * 6</option>                                         <option value="10">10 * 10</option>                                      </select>                                      <br><br>                             <font color="red"><b>游戏规则</b></font><br>                             (1)只要拼成如下图你就赢了:                             <br><br>                             <img id="imgid" width="100px" height="100px" border="1">                         </div>                     </td>                 </tr>             </table>             <br>         </center>     </form> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值