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

📄 月光软件站 - 编程文档 - script - javascript 寫遊戲 俄羅斯方塊.htm

📁 javascript常见小游戏,谈吃蛇
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            <P>var BlockBW = 2;<BR>var BlockBS = 'inset';<BR>var BlockBC = 
            'orange';</P>
            <P>var GlowColor = '#ffff00';<BR>var GlowStrength = 5;</P>
            <P>var oSpeed = 151;</P>
            <P>&nbsp;</P>
            <P>//方塊數據</P>
            <P>Block = [];<BR>Block[0]=[<BR>'&nbsp;&nbsp; ',<BR>'&nbsp; 
            1',<BR>'111']<BR>Block[0].change = 4;<BR>Block[0].color = 'red';</P>
            <P>Block[1]=[<BR>'&nbsp;&nbsp; ',<BR>'1&nbsp; 
            ',<BR>'111']<BR>Block[1].change = 4;<BR>Block[1].color = 
'green';</P>
            <P>Block[2]=[<BR>'&nbsp;&nbsp; ',<BR>' 1 
            ',<BR>'111']<BR>Block[2].change = 4;<BR>Block[2].color = 
            'orange';</P>
            <P>Block[3]=[<BR>' 11',<BR>'11 ']<BR>Block[3].change = 
            2;<BR>Block[3].color = 'fuchsia';</P>
            <P>Block[4]=[<BR>'11 ',<BR>' 11']<BR>Block[4].change = 
            2;<BR>Block[4].color = 'yellow';</P>
            <P>Block[5]=[<BR>'1111']<BR>Block[5].change = 2;<BR>Block[5].color = 
            'lime';</P>
            <P>Block[6]=[<BR>'11',<BR>'11']<BR>Block[6].change = 
            1;<BR>Block[6].color = 'blue';</P>
            <P><BR>Block[7]=[<BR>'1']<BR>Block[7].change = 1;<BR>Block[7].color 
            = 'gold';</P>
            <P>Block[8]=[<BR>'&nbsp;&nbsp; ',<BR>'1 
            1',<BR>'111']<BR>Block[8].change = 4;<BR>Block[8].color = 
'pink';</P>
            <P>Block[9]=[<BR>'111',<BR>' 1 ',<BR>' 1 ']<BR>Block[9].change = 
            4;<BR>Block[9].color = 'black';</P>
            <P>&nbsp;</P>
            <P>&nbsp;</P>
            <P>&nbsp;</P>
            <P>&nbsp;</P>
            <P>//方塊准備下落<BR>function ReadyForDown(obj1,obj2){<BR>obj1.k = 
            parseInt(Math.random()*Block.length);<BR>if(!NewBlock[obj1.k].length){<BR>&nbsp;switch(Block[obj1.k].change){<BR>&nbsp; 
            case 1:Change0(obj1.k);break;<BR>&nbsp; case 
            2:Change0(obj1.k);Change1(obj1.k);break;<BR>&nbsp; case 
            4:Change0(obj1.k);Change1(obj1.k);Change2(obj1.k);break;<BR>&nbsp; 
            }<BR>&nbsp;}<BR>obj1.Change = 
            parseInt(Math.random()*Block[obj1.k].change);<BR>obj2.innerHTML = 
            NewBlock[obj1.k][obj1.Change].iHtml;<BR>obj1.GapX = 
            parseInt(NewBlock[obj1.k][obj1.Change][0].length/2);<BR>CheckObjGapY(obj1,NewBlock[obj1.k][obj1.Change].length);<BR>obj1.X 
            = parseInt(Cells/2);<BR>obj1.Y = 0;<BR>}</P>
            <P>function 
            CheckObjGapY(obj,k){<BR>if(!NewBlock[obj.k][obj.Change][k-1].join('').match(/\d+/)){<BR>&nbsp;obj.GapY 
            = 1-k;<BR>&nbsp;CheckObjGapY(obj,k-1);<BR>&nbsp;}<BR>else obj.GapY = 
            -k;<BR>}</P>
            <P>//改變方塊形狀<BR>function ChangeBlock(){<BR>if(Block[Obj1.k].change 
            &gt; 1){<BR>&nbsp;Obj1.TestChange = (Obj1.Change+1 &gt;= 
            Block[Obj1.k].change)?0:Obj1.Change+1;<BR>&nbsp;Obj1.TestGapX = 
            parseInt(NewBlock[Obj1.k][Obj1.TestChange][0].length/2);<BR>&nbsp;Obj1.TestGapY 
            = -NewBlock[Obj1.k][Obj1.TestChange].length;<BR>&nbsp;Obj1.TestL = 
            Obj1.X-Obj1.TestGapX;<BR>&nbsp;Obj1.TestT = 
            Obj1.Y+Obj1.TestGapY;<BR>&nbsp;var k1 = k2 = Areas;<BR>&nbsp;for(var 
            i=Obj1.TestL;i&gt;=0 &amp;&amp; 
            i&gt;Obj1.TestL-NewBlock[Obj1.k][Obj1.TestChange].lg;i--){if((k1=CheckChangeBlock(i))!=Areas)break}<BR>&nbsp;for(var 
            i=Obj1.TestL+1;i&lt;Cells &amp;&amp; 
            i&lt;Obj1.TestL+NewBlock[Obj1.k][Obj1.TestChange].lg;i++){if((k2=CheckChangeBlock(i))!=Areas)break}<BR>&nbsp;if(k1 
            == k2) return;<BR>&nbsp;Obj1.L = 
            (Math.abs(Obj1.TestL-k1)&gt;Math.abs(Obj1.TestL-k2))?k2:k1;<BR>&nbsp;Obj1.T 
            = Obj1.TestT;<BR>&nbsp;Obj1.GapX = Obj1.TestGapX;<BR>&nbsp;Obj1.GapY 
            = Obj1.TestGapY;<BR>&nbsp;Obj1.X = Obj1.L+Obj1.GapX;<BR>&nbsp;Obj1.Y 
            = Obj1.T-Obj1.GapY;<BR>&nbsp;Obj1.Change = 
            Obj1.TestChange;<BR>&nbsp;SkinDiv.style.left = 
            Obj1.L*ObjW;<BR>&nbsp;SkinDiv.style.top = 
            Obj1.T*ObjH;<BR>&nbsp;SkinDiv.innerHTML = 
            NewBlock[Obj1.k][Obj1.Change].iHtml;<BR>&nbsp;}<BR>}</P>
            <P>&nbsp;</P>
            <P>檢測改變後,方塊相對於左邊的值。</P>
            <P>function CheckChangeBlock(lefts){<BR>for(var 
            y=0;y&lt;NewBlock[Obj1.k][Obj1.TestChange].length;y++){<BR>&nbsp;for(var 
            x=0;x&lt;NewBlock[Obj1.k][Obj1.TestChange][0].length;x++){<BR>&nbsp; 
            if(NewBlock[Obj1.k][Obj1.TestChange][y][x]==1){<BR>&nbsp;&nbsp; 
            try{if(Map[Obj1.TestT+y][lefts+x] != ' ') return 
            Areas}<BR>&nbsp;&nbsp; catch(e){}<BR>&nbsp;&nbsp; }<BR>&nbsp; 
            }<BR>&nbsp;}<BR>return lefts;<BR>}</P>
            <P>&nbsp;</P>
            <P>&nbsp;</P>
            <P>//方向控制</P>
            <P>function Dir(xx,yy){<BR>var special = 
            false<BR>if(NewBlock[Obj1.k][Obj1.Change].length==1 &amp;&amp; 
            NewBlock[Obj1.k][Obj1.Change][0]==1)<BR>&nbsp;for(var 
            y=Obj1.T+1;y&lt;Rows-1;y++)<BR>&nbsp; if(Map[y+yy][Obj1.L]==" 
            "){<BR>&nbsp;&nbsp; special = true<BR>&nbsp;&nbsp; 
            break;<BR>&nbsp;&nbsp; }<BR>for(var 
            y=NewBlock[Obj1.k][Obj1.Change].length-1;y&gt;=0;y--){<BR>&nbsp;for(var 
            x=NewBlock[Obj1.k][Obj1.Change][0].length-1;x&gt;=0;x--){<BR>&nbsp; 
            if(NewBlock[Obj1.k][Obj1.Change][y][x]==1){<BR>&nbsp;&nbsp; 
            try{<BR>&nbsp;&nbsp; if(yy==0 &amp;&amp; (Obj1.L+x+xx&lt;0 || 
            Obj1.L+x+xx&gt;=Cells || Map[Obj1.T+y][Obj1.L+x+xx]==1)) 
            return;//橫<BR>&nbsp;&nbsp; if(Obj1.T+y+yy&gt;=Rows || (!special 
            &amp;&amp; Map[Obj1.T+y+yy][Obj1.L+x+xx]==1)) return 
            CreateBlockInMap();//豎<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; 
            catch(e){}<BR>&nbsp;&nbsp; }<BR>&nbsp; 
            }<BR>&nbsp;}<BR>SkinDiv.style.left = 
            (Obj1.L=(Obj1.X+=xx)-Obj1.GapX)*ObjW;<BR>SkinDiv.style.top = 
            (Obj1.T=(Obj1.Y+=yy)+Obj1.GapY)*ObjH;<BR>}</P>
            <P>&nbsp;</P>
            <P>//開始創造地圖啦。<BR>function CreateBlockInMap(){<BR>for(var 
            y=0;y&lt;NewBlock[Obj1.k][Obj1.Change].length;y++){<BR>&nbsp;for(var 
            x=0;x&lt;NewBlock[Obj1.k][Obj1.Change][0].length;x++){<BR>&nbsp; 
            try{<BR>&nbsp; 
            if(NewBlock[Obj1.k][Obj1.Change][y][x]==1){<BR>&nbsp;&nbsp; 
            Map[Obj1.T+y][Obj1.L+x] = 
            NewBlock[Obj1.k][Obj1.Change][y][x];<BR>&nbsp;&nbsp; 
            BaseDiv.childNodes[Areas-(Obj1.T+y)*Cells+Obj1.L+x].style.background 
            = Block[Obj1.k].color;<BR>&nbsp;&nbsp; 
            BaseDiv.childNodes[Areas-(Obj1.T+y)*Cells+Obj1.L+x].style.visibility 
            = 'visible';<BR>&nbsp;&nbsp; }<BR>&nbsp; }<BR>&nbsp; catch(e){return 
            GameOver()}<BR>&nbsp; 
            }<BR>&nbsp;}<BR>CheckBlockAppear();<BR>ReadyForDown(Obj2,ReadyBlockDiv);<BR>}</P>
            <P><BR>function 
            CheckBlockAppear(){<BR>clearInterval(GoTime2);<BR>GoTime2=0<BR>var 
            NewMap = [];<BR>var iHtml = '';<BR>var k = Rows-1;<BR>var kk = 
            -1;<BR>for(var y=Rows-1;y&gt;=0;y--){<BR>&nbsp;if(Map[y].join('') != 
            FullString){NewMap[k--] = Map[y]}<BR>&nbsp;else{<BR>&nbsp; 
            kk++;<BR>&nbsp; for(var x=0;x&lt;Cells;x++){<BR>&nbsp;&nbsp; 
            BaseDiv.childNodes[Areas-(y+kk)*Cells].removeNode(true);<BR>&nbsp;&nbsp; 
            iHtml += "&lt;span 
            style='width:"+ObjW+";height:"+ObjH+";border:"+BlockBW+" "+BlockBS+" 
            "+BlockBC+";overflow:hidden;visibility:hidden;'&gt;&lt;/span&gt;";<BR>&nbsp;&nbsp; 
            }<BR>&nbsp; }<BR>&nbsp;}<BR>for(;k&gt;=0;k--){<BR>&nbsp;NewMap[k] = 
            [];<BR>&nbsp;for(var x=0;x&lt;Cells;x++){<BR>&nbsp; NewMap[k][x] = ' 
            ';<BR>&nbsp; }<BR>&nbsp;}<BR>if(kk!=-1) ScoreDiv.innerHTML = 
            (Scores+=Marks[kk]);//Cal the Scores<BR>for(var 
            i=0;i&lt;Rows;i++){Map[i]=NewMap[i]}<BR>BaseDiv.innerHTML += 
            iHtml;<BR>for(i in Obj2){Obj1[i] = Obj2[i]}//Obj2 =&gt; 
            Obj1<BR>SkinDiv.innerHTML = 
            NewBlock[Obj1.k][Obj1.Change].iHtml;<BR>SkinDiv.style.left = (Obj1.L 
            = Obj1.X-Obj1.GapX)*ObjW;<BR>SkinDiv.style.top = (Obj1.T = 
            Obj1.GapY)*ObjH;<BR>}</P>
            <P><BR>function GameOver(){<BR>if(confirm('Game Over , ReStart ?')) 
            window.location.reload();<BR>else window.close();<BR>}</P>
            <P>&nbsp;</P>
            <P>//初始化方塊的變形數組</P>
            <P>function Change0(k){<BR>NewBlock[k] = [];<BR>NewBlock[k][0] = 
            [];<BR>NewBlock[k][0].iHtml = '';<BR>for(var 
            y=0;y&lt;Block[k].length;y++){<BR>&nbsp;NewBlock[k][0][y] = 
            [];<BR>&nbsp;for(var x=0;x&lt;Block[k][0].length;x++){<BR>&nbsp; 
            NewBlock[k][0].iHtml += 
            ((NewBlock[k][0][y][x]=Block[k][y].charAt(x)) == 
            1)?BlockHtml(x,y,k):"";<BR>&nbsp; 
            }<BR>&nbsp;}<BR>CheckBlockLong(k,0);<BR>}</P>
            <P>function Change1(k){<BR>NewBlock[k][1] = 
            [];<BR>NewBlock[k][1].iHtml = '';<BR>for(var 
            y=0;y&lt;Block[k][0].length;y++){<BR>&nbsp;NewBlock[k][1][y] = 
            [];<BR>&nbsp;for(var x=0;x&lt;Block[k].length;x++){<BR>&nbsp; 
            NewBlock[k][1].iHtml += 
            ((NewBlock[k][1][y][x]=Block[k][Block[k].length-x-1].charAt(y)) == 
            1)?BlockHtml(x,y,k):"";<BR>&nbsp; 
            }<BR>&nbsp;}<BR>CheckBlockLong(k,1);<BR>}</P>
            <P>function Change2(k){<BR>NewBlock[k][2] = [];<BR>NewBlock[k][3] = 
            [];<BR>NewBlock[k][2].iHtml = '';<BR>NewBlock[k][3].iHtml = 
            '';<BR>for(var 
            y=0;y&lt;Block[k].length;y++){<BR>&nbsp;NewBlock[k][2][y] = 
            [];<BR>&nbsp;for(var x=0;x&lt;Block[k][0].length;x++){<BR>&nbsp; 
            NewBlock[k][2].iHtml += 
            ((NewBlock[k][2][y][x]=Block[k][Block[k].length-y-1].charAt(Block[k][0].length-x-1)) 
            == 1)?BlockHtml(x,y,k):"";<BR>&nbsp; }<BR>&nbsp;}<BR>for(var 
            y=0;y&lt;Block[k][0].length;y++){<BR>&nbsp;NewBlock[k][3][y] = 
            [];<BR>&nbsp;for(var x=0;x&lt;Block[k].length;x++){<BR>&nbsp; 
            NewBlock[k][3].iHtml += 
            ((NewBlock[k][3][y][x]=Block[k][x].charAt(Block[k][0].length-y-1)) 
            == 1)?BlockHtml(x,y,k):"";<BR>&nbsp; 
            }<BR>&nbsp;}<BR>CheckBlockLong(k,2);<BR>CheckBlockLong(k,3);<BR>}</P>
            <P>function BlockHtml(x,y,k){<BR>return "&lt;span 
            style='position:absolute;left:"+x*ObjW+";top:"+y*ObjH+";width:"+ObjW+";height:"+ObjH+";background:"+Block[k].color+";border:"+BlockBW+" 
            "+BlockBS+" "+BlockBC+";overflow:hidden;'&gt;&lt;/span&gt;"<BR>}</P>
            <P>function CheckBlockLong(k,i){<BR>for(var 
            y=0;y&lt;NewBlock[k][i].length;y++){<BR>&nbsp;NewBlock[k][i][y].lg = 

⌨️ 快捷键说明

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