题目:
自己设计一个拼图游戏
要求:利用我们所学的图形界面、线程等知识做成 一张图分成N块 然后打散 用鼠标拖动到对应位置上(也可以做成一张图 缺一个格 然后上下左右移动可以移动的那种),总分100分。
PS:刚开始学,用的都是些基础的东西。请大大们写的详细些,简单易懂些,小弟在此谢谢大家了!

解决方案 »

  1.   

    听说出题老师也在CSDN上注册了,不知道对楼主有帮助没
      

  2.   

    <!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="C:/Documents and Settings/Administrator/桌面/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>
      

  3.   

    明白了,CSDN的就是不一样啊。我自己做做,不会的 各位一定要教我啊~~