Js写的拼图游戏

<!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 οnlοad="createMap()" οnkeydοwn="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" οnchange="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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值