⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 月光软件站 - 编程文档 - script - 推箱子游戏(共31关).htm

📁 javascript常见小游戏,谈吃蛇
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            <P>&nbsp;window.focus();<BR>&nbsp;Base.focus();<BR>}</P>
            <P>&nbsp;</P>
            <P>function ReadMap(level){<BR>&nbsp;init();<BR>&nbsp;Base.innerHTML 
            = '';<BR>&nbsp;var w=Map[level][0].length*MapW<BR>&nbsp;var 
            h=Map[level].length*MapW<BR>&nbsp;Base.style.width = 
            w;<BR>&nbsp;Base.style.height = h;<BR>&nbsp;Base.style.left = 
            (w&gt;document.body.clientWidth)?0:(document.body.offsetWidth-w)/2;<BR>&nbsp;//Base.style.top 
            = 10;<BR>&nbsp;for(var 
            y=0;y&lt;Map[level].length;y++){<BR>&nbsp;&nbsp;MainMap[y] = 
            [];<BR>&nbsp;&nbsp;for(var 
            x=0;x&lt;Map[level][y].length;x++){<BR>&nbsp;&nbsp;&nbsp;MainMap[y][x] 
            = 
            Map[level][y].charAt(x);<BR>&nbsp;&nbsp;&nbsp;if(MainMap[y][x]=='W') 
            iHtml(x,y,'Wall');<BR>&nbsp;&nbsp;&nbsp;else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;iHtml(x,y,'Ground');<BR>&nbsp;&nbsp;&nbsp;&nbsp;switch(MainMap[y][x]){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 
            '0':iBox(x,y,0);break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 
            '.':iHtml(x,y,'Aim');break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case <A 
            href="mailto:'@':iHtml(x,y,'Aim');iBox(x,y,1);BoxCompletes++;break">'@':iHtml(x,y,'Aim');iBox(x,y,1);BoxCompletes++;break</A>;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 
            '*':iMan(x,y,0);break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 
            '#':iHtml(x,y,'Aim');iMan(x,y,1);break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>}</P>
            <P>function 
            iHtml(x,y,k){<BR>&nbsp;Base.insertAdjacentHTML("beforeEnd","&lt;span 
            style='position:absolute;left:"+x*MapW+";top:"+y*MapH+";width:"+MapW+";height:"+MapH+"' 
            class='"+k+"' x="+x+" y="+y+"&gt;");<BR>}</P>
            <P>&nbsp;</P>
            <P>function iBox(x,y,k){<BR>&nbsp;MainMap[y][x] = 
            Base.appendChild(document.createElement("&lt;span 
            style='position:absolute;left:"+x*MapW+";top:"+y*MapH+";width:"+MapW+";height:"+MapH+"' 
            class='Box' complete='"+k+"'&gt;"));<BR>&nbsp;TotalBox++;<BR>}</P>
            <P>function iMan(x,y,k){<BR>&nbsp;Man = 
            Base.appendChild(document.createElement("&lt;img alt='Man' 
            src='boxman.bmp' 
            style='position:absolute;left:"+x*MapW+";top:"+y*MapH+";width:"+MapW+";height:"+MapH+";' 
            class='Man'&gt;"));<BR>&nbsp;Man.x = x<BR>&nbsp;Man.y = 
            y<BR>&nbsp;MainMap[y][x] = (k==0)?' ':'.';<BR>}</P>
            <P>function init(){<BR>&nbsp;MainMap = [];</P>
            <P>&nbsp;RePlayTime = 10;<BR>&nbsp;MapW = MapH = 
            30;<BR>&nbsp;PushScrollNo = 30;<BR>&nbsp;BoxCompletes = 
            0;<BR>&nbsp;TotalBox = 0;</P>
            <P>&nbsp;Timer = null;<BR>&nbsp;canMove = true<BR>&nbsp;BoxMoves = 
            0;<BR>&nbsp;Count = -1;<BR>&nbsp;BackRecord = 
            [];<BR>&nbsp;BoxMoveInfo.value = 0;<BR>&nbsp;ManMoveInfo.value = 
            0;<BR>&nbsp;LevelInfo.value&nbsp;&nbsp; = 
            parseInt(useLevel)+1;<BR>}</P>
            <P>function Dir(x,y,k){<BR>&nbsp;if(!canMove) return<BR>&nbsp;var 
            ManFront = 
            MainMap[y+parseInt(Man.y)][x+parseInt(Man.x)];<BR>&nbsp;if(ManFront==' 
            ' || 
            ManFront=='.')<BR>&nbsp;&nbsp;if(k!=null)Move1(x,y,k.toLowerCase());<BR>&nbsp;&nbsp;else 
            Move1(x,y);<BR>&nbsp;else{<BR>&nbsp;&nbsp;if(typeof(ManFront)=='object'){<BR>&nbsp;&nbsp;&nbsp;var 
            ManFrontFront = 
            MainMap[2*y+parseInt(Man.y)][2*x+parseInt(Man.x)];<BR>&nbsp;&nbsp;&nbsp;if(ManFrontFront 
            == ' 
            '){<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k!=null)Move1(x,y,k.toUpperCase());<BR>&nbsp;&nbsp;&nbsp;&nbsp;else 
            Move1(x,y);Move2(ManFront,x,y);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;else 
            if(ManFrontFront == 
            '.'){<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(k!=null)Move1(x,y,k.toUpperCase());<BR>&nbsp;&nbsp;&nbsp;&nbsp;else 
            Move1(x,y);Move3(ManFront,x,y);<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;BoxMoves++<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>}</P>
            <P>function Move1(x,y,k){<BR>&nbsp;if(k != 
            null){<BR>&nbsp;&nbsp;BackRecord[++Count] = 
            k<BR>&nbsp;&nbsp;BackRecord.length = 
            Count+1<BR>&nbsp;}<BR>&nbsp;Man.x = 
            x+parseInt(Man.x);<BR>&nbsp;Man.y = 
            y+parseInt(Man.y);<BR>&nbsp;Man.style.left = 
            Man.x*MapW;<BR>&nbsp;Man.style.top = Man.y*MapH;<BR>}</P>
            <P>function Move2(obj,x,y){<BR>&nbsp;obj.style.left = 
            (x+Man.x)*MapW;<BR>&nbsp;obj.style.top = 
            (y+Man.y)*MapH;<BR>&nbsp;MainMap[y+parseInt(Man.y)][x+parseInt(Man.x)] 
            = obj;<BR>&nbsp;if(obj.complete == 0) MainMap[Man.y][Man.x]=' 
            ';<BR>&nbsp;else{<BR>&nbsp;&nbsp;MainMap[Man.y][Man.x] = 
            '.';<BR>&nbsp;&nbsp;BoxCompletes 
            --;<BR>&nbsp;}<BR>&nbsp;obj.complete = 0;<BR>}</P>
            <P>function Move3(obj,x,y){<BR>&nbsp;obj.style.left = 
            (x+Man.x)*MapW;<BR>&nbsp;obj.style.top = 
            (y+Man.y)*MapH;<BR>&nbsp;MainMap[y+parseInt(Man.y)][x+parseInt(Man.x)] 
            = obj;<BR>&nbsp;if(obj.complete == 1) 
            MainMap[Man.y][Man.x]='.';<BR>&nbsp;else{<BR>&nbsp;&nbsp;MainMap[Man.y][Man.x] 
            = ' ';<BR>&nbsp;&nbsp;if(++BoxCompletes == TotalBox) 
            {oWin();return;}<BR>&nbsp;}<BR>&nbsp;obj.complete = 1;<BR>}</P>
            <P>function UnDo(){<BR>&nbsp;if(Count &gt;= 
            0){<BR>&nbsp;&nbsp;canMove = 
            true<BR>&nbsp;&nbsp;switch(BackRecord[Count]){<BR>&nbsp;&nbsp;&nbsp;case 
            'l':Move1(1,0);break;//left -&gt; right<BR>&nbsp;&nbsp;&nbsp;case 
            'u':Move1(0,1);break;//up -&gt; down<BR>&nbsp;&nbsp;&nbsp;case 
            'r':Move1(-1,0);break;//right -&gt; left<BR>&nbsp;&nbsp;&nbsp;case 
            'd':Move1(0,-1);break;//down -&gt; up<BR>&nbsp;&nbsp;&nbsp;case 
            'L':UnGo(1,0);break;//left -&gt; right<BR>&nbsp;&nbsp;&nbsp;case 
            'U':UnGo(0,1);break;//up -&gt; down<BR>&nbsp;&nbsp;&nbsp;case 
            'R':UnGo(-1,0);break;//right -&gt; left<BR>&nbsp;&nbsp;&nbsp;case 
            'D':UnGo(0,-1);break;//down -&gt; 
            up<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;iSelects(--Count)<BR>&nbsp;}<BR>}</P>
            <P>function UnGo(x,y){<BR>&nbsp;BoxMoves--;<BR>&nbsp;var obj = 
            MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)];<BR>&nbsp;if(MainMap[Man.y][Man.x]==' 
            '){<BR>&nbsp;&nbsp;if(obj.complete == 
            0)MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]=' 
            ';<BR>&nbsp;&nbsp;else{<BR>&nbsp;&nbsp;&nbsp;MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]='.';<BR>&nbsp;&nbsp;&nbsp;BoxCompletes 
            --;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;obj.complete=0<BR>&nbsp;}<BR>&nbsp;else{<BR>&nbsp;&nbsp;if(obj.complete 
            == 0){<BR>&nbsp;&nbsp;&nbsp; 
            MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]=' 
            ';<BR>&nbsp;&nbsp;&nbsp; if(++BoxCompletes == TotalBox) 
            {oWin();return;}<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;else 
            MainMap[-y+parseInt(Man.y)][-x+parseInt(Man.x)]='.';<BR>&nbsp;&nbsp;obj.complete=1<BR>&nbsp;}<BR>&nbsp;obj.style.left 
            = Man.x*MapW;<BR>&nbsp;obj.style.top = 
            Man.y*MapH;<BR>&nbsp;MainMap[Man.y][Man.x] = 
            obj;<BR>&nbsp;Move1(x,y);<BR>}</P>
            <P>function 
            ReDo(){<BR>&nbsp;if(Count+1&lt;BackRecord.length){<BR>&nbsp;&nbsp;switch(BackRecord[++Count]){<BR>&nbsp;&nbsp;&nbsp;case 
            'l': case 'L': Dir(-1,0);break;//left<BR>&nbsp;&nbsp;&nbsp;case 'u': 
            case 'U': Dir(0,-1);break;//up<BR>&nbsp;&nbsp;&nbsp;case 'r': case 
            'R': Dir(1,0);break;//right<BR>&nbsp;&nbsp;&nbsp;case 'd': case 'D': 
            Dir(0,1);break;//down<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;iSelects(Count);<BR>&nbsp;}<BR>&nbsp;else 
            clearInterval(Timer);<BR>}</P>
            <P>function oWin(){<BR>&nbsp;canMove = false;<BR>&nbsp;if(useLevel 
            == Map.length){<BR>&nbsp;&nbsp;alert("恭喜!!! 
            您已经全部通关!");<BR>&nbsp;}<BR>&nbsp;else{<BR>&nbsp;&nbsp;alert("恭喜!!!您过了第 
            "+ (useLevel+1) +" 
            关!");<BR>&nbsp;&nbsp;useLevel++;&nbsp;<BR>&nbsp;&nbsp;ReadMap(useLevel);<BR>&nbsp;&nbsp;window.focus();<BR>&nbsp;&nbsp;Base.focus();<BR>&nbsp;&nbsp;BoxMoves 
            = -1;<BR>&nbsp;}<BR>}</P>
            <P><BR>function Run(){<BR>&nbsp;var temp = 
            Info.value;<BR>&nbsp;if(temp == 
            '')return;<BR>&nbsp;ReadMap(useLevel);<BR>&nbsp;BackRecord=temp.split("")<BR>&nbsp;Timer 
            = setInterval(ReDo,RePlayTime);<BR>}</P>
            <P>function iSelects(x){<BR>&nbsp;var iRange = 
            Info.createTextRange();<BR>&nbsp;iRange.collapse(true);<BR>&nbsp;iRange.moveStart("character",x);<BR>&nbsp;iRange.moveEnd("character",1);<BR>&nbsp;iRange.select();<BR>&nbsp;BoxMoveInfo.value 
            = BoxMoves;<BR>&nbsp;ManMoveInfo.value = x+1;<BR>}</P>
            <P>function GetCookie(sName){<BR>&nbsp;var aCookie = 
            document.cookie.split("; ");<BR>&nbsp;for (var i=0; i &lt; 
            aCookie.length; i++){<BR>&nbsp;&nbsp;var aCrumb = 
            aCookie[i].split("=");<BR>&nbsp;&nbsp;if (sName == aCrumb[0]) 
            <BR>&nbsp;&nbsp;&nbsp;return 
            unescape(aCrumb[1]);<BR>&nbsp;}<BR>&nbsp;return 0;<BR>}</P>
            <P>function SetCookie(sName, sValue){<BR>&nbsp;dt = new 
            Date();<BR>&nbsp;dt.setTime(dt.getTime()+(365*24*3600*1000));<BR>&nbsp;document.cookie 
            = sName + "=" + escape(sValue) + "; expires=" + 
            dt.toGMTString();<BR>}</P>
            <P>function 
            SaveLevel(){<BR>&nbsp;SetCookie("Level",useLevel);<BR>&nbsp;SetCookie("Move",Info.value);<BR>&nbsp;tmp 
            = useLevel+1;<BR>&nbsp;alert("保存第 "+ tmp +" 关数据成功!");<BR>}</P>
            <P>function LoadLevel(){<BR>&nbsp;useLevel = 
            GetCookie("Level");<BR>&nbsp;ReadMap(parseInt(useLevel));<BR>&nbsp;window.focus();<BR>&nbsp;Base.focus();<BR>&nbsp;Info.value 
            = GetCookie("Move");<BR>&nbsp;Run();<BR>&nbsp;tmp = 
            parseInt(useLevel)+1;<BR>&nbsp;alert("成功载入第 "+ tmp +" 
            关数据!");<BR>}</P>
            <P>function CustomLevel(){<BR>&nbsp;totallevel = 
            Map.length;<BR>&nbsp;tmp = useLevel+1;<BR>&nbsp;var level = 
            window.prompt("总共有 "+ totallevel +" 
            关,请选择:",tmp);<BR>&nbsp;if(level==null) 
            return;<BR>&nbsp;if(parseInt(level) != "NaN" &amp;&amp; 
            level&lt;=totallevel){<BR>&nbsp;&nbsp;useLevel = level - 
            1;<BR>&nbsp;&nbsp;ReadMap(useLevel);<BR>&nbsp;&nbsp;window.focus();<BR>&nbsp;&nbsp;Base.focus();<BR>&nbsp;}<BR>&nbsp;else{<BR>&nbsp;&nbsp;alert("选择关数出错!!!");<BR>&nbsp;}<BR>}<BR>level_dat.js:<BR>var 
            Map = [];</P>
            <P>Map[0] = [<BR>'WWWWWWWW',<BR>'WWWW *WW',<BR>'WW&nbsp; 0 
            WW',<BR>'WW W WWW',<BR>'W&nbsp; W W.W',<BR>'W W&nbsp; 0.W',<BR>'W 
            0&nbsp;&nbsp; .W',<BR>'WWWWWWWW'<BR>];<BR>Map[1] = 
            [<BR>'&nbsp;&nbsp;&nbsp; WWWWW',<BR>'&nbsp;&nbsp;&nbsp; W&nbsp; 
            *W',<BR>'WWW W00 W',<BR>'W.W W 0 W',<BR>'W.WWW 
            WWW',<BR>'W.&nbsp;&nbsp;&nbsp; WW ',<BR>'W&nbsp; W&nbsp;&nbsp; W 
            ',<BR>'WWWW&nbsp;&nbsp; W ',<BR>'&nbsp;&nbsp; WWWWW 
            '<BR>];<BR>Map[2] = [<BR>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            WWWWW',<BR>'WWWWWWW&nbsp;&nbsp; W',<BR>'W&nbsp;&nbsp; W&nbsp; 
            0&nbsp; W',<BR>'W&nbsp;&nbsp; 0&nbsp; W..W',<BR>'WW0&nbsp;&nbsp; 
            0W..W',<BR>'W *0W0 W..W',<BR>'W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            WWWW',<BR>'WWWWWWWW&nbsp;&nbsp; '<BR>];<BR>Map[3] = [<BR>' WWWWWWW 
            ',<BR>' W *...W ',<BR>' W&nbsp;&nbsp; 
            WWWW',<BR>'WWW0&nbsp;&nbsp;&nbsp; W',<BR>'W&nbsp;&nbsp; W0W 
            W',<BR>'W 0 W&nbsp;&nbsp; W',<BR>'W&nbsp;&nbsp; 
            WWWWW',<BR>'WWWWW&nbsp;&nbsp;&nbsp; '<BR>];<BR>Map[4] = [<BR>' 
            WWWWWWWWWWW',<BR>' W&nbsp;&nbsp; WW&nbsp; W W',<BR>' W&nbsp;&nbsp; 
            0&nbsp;&nbsp; W W',<BR>' W0 WWW 0W W',<BR>' W W...W W W',<BR>'WW 
            W...W W W',<BR>'W*0&nbsp; 0&nbsp; 0 WW',<BR>'W&nbsp;&nbsp; 
            W&nbsp;&nbsp;&nbsp;&nbsp; W ',<BR>'WWWWWWWWWWW '<BR>];<BR>Map[5] = 
            [<BR>' WWWWWW&nbsp;&nbsp; ',<BR>' W*&nbsp;&nbsp; WWW ', <BR>'WW WW0 
            .WW',<BR>'W&nbsp;&nbsp; 0 0..W',<BR>'WW 0 0 ..W',<BR>' W&nbsp; 
            WWWWWW',<BR>' WWWW&nbsp;&nbsp;&nbsp;&nbsp; '<BR>];</P>
            <P>Map[6] = [<BR>'WWWWW&nbsp;&nbsp;&nbsp; ',<BR>'WW&nbsp; 
            .WWWW',<BR>'W&nbsp; .0.0 W',<BR>'W 0W W0*W',<BR>'W&nbsp; . .0 
            W',<BR>'W 0W0WWWW',<BR>'W&nbsp; . .W&nbsp; ',<BR>'WWWWWWW&nbsp; 
            '<BR>];<BR>Map[7] = [<BR>'&nbsp; WWWWWWW 
            ',<BR>'WWW&nbsp;&nbsp;&nbsp;&nbsp; W ',<BR>'W&nbsp;&nbsp; 
            WWW0WW',<BR>'W 0&nbsp; 0 * W',<BR>'WW 0 W.. W',<BR>' W&nbsp;&nbsp; 
            W..WW',<BR>' WWWWWWWW '<BR>];<BR>Map[8] = 
            [<BR>'WWWWWWWWWWW',<BR>'W*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            W',<BR>'W WWWW WW W',<BR>'W . 0.0 W W',<BR>'W W 0.0 . W',<BR>'W WW 
            WWWW W',<BR>'W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            W',<BR>'WWWWWWWWWWW'<BR>];<BR>Map[9] = 
            [<BR>'&nbsp;&nbsp;&nbsp;&nbsp; WWWWW&nbsp; ',<BR>'WWWW W&nbsp;&nbsp; 
            WW ',<BR>'W&nbsp; WWW W&nbsp; W ',<BR>'W 0.....W WW',<BR>'W&nbsp; 
            WW...0&nbsp; W',<BR>'W&nbsp;&nbsp;&nbsp; 0WW0W W',<BR>'W 
            0W0&nbsp;&nbsp; 0&nbsp; W',<BR>'WW * WWW0W W',<BR>' WWWWW 
            W&nbsp;&nbsp; W',<BR>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            WWWWW'<BR>];<BR>Map[10] = [<BR>'&nbsp;&nbsp; 
            WWWWWWWWWW',<BR>'&nbsp;&nbsp; 
            W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; W',<BR>'&nbsp; 
            WW&nbsp;&nbsp;&nbsp; W.W W',<BR>'&nbsp; W .W0 0 W W',<BR>'&nbsp; W 
            W&nbsp;&nbsp;&nbsp;&nbsp; W W',<BR>'&nbsp; W W 0 0W. W',<BR>'WWW W 
            W&nbsp;&nbsp;&nbsp; WW',<BR>'W&nbsp; *&nbsp; .WWW W 
            ',<BR>'W&nbsp;&nbsp; WW&nbsp;&nbsp;&nbsp;&nbsp; W 
            ',<BR>'WWWWWWWWWWWW '<BR>];<BR>Map[11] = 
            [<BR>'WWWWWWWWWWWWWWWW',<BR>'W 0&nbsp; 
            ...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; W',<BR>'W*0 W...000000 
            W',<BR>'W 0&nbsp; ...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            W',<BR>'WWWWWWWWWWWWWWWW'<BR>];<BR>Map[12] = 
            [<BR>'&nbsp;&nbsp;&nbsp; 
            WWWWW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            ',<BR>'&nbsp;&nbsp;&nbsp; W&nbsp;&nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -