<HTML> <HEAD> <title>俄罗斯方块</title> <style> <!-- BODY { } .MB { BACKGROUND-COLOR: firebrick; CURSOR: default; HEIGHT: 22px; WIDTH: 22px } .SB { BACKGROUND-COLOR: slategray; CURSOR: default; HEIGHT: 22px; WIDTH: 22px } .BK { BACKGROUND-COLOR: white; CURSOR: default; HEIGHT: 22px; WIDTH: 22px } .GT { BORDER-BOTTOM: deepskyblue thin solid; BORDER-LEFT: deepskyblue thin solid; BORDER-RIGHT: deepskyblue thin solid; BORDER-TOP: deepskyblue thin solid; CURSOR: default } --> </style> <script> <!-- var BX=new Array(4); var BY=new Array(4); var PX=new Array(4); var PY=new Array(4); var mTimer var firstView function beginGame() { gameState=0; speed=1; outTime=1100-speed*100; score=0; if(gameState!=0)return; firstView=true; for(j=0;j<16;j++) for(i=0;i<10;i++) setClass(i,j,"BK"); randBar(); gameState=1; Play.disabled=true; window.clearInterval(mTimer); mTimer=window.setInterval("moveBar()",outTime); } function keyControl() { if(gameState!=1)return; switch(event.keyCode){ case 37:{ //left for(i=0;i<4;i++)if(BX[i]==0)return; for(i=0;i<4;i++)if(getClass(BX[i]-1,BY[i])=="SB")return; for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK"); for(i=0;i<4;i++)BX[i]=BX[i]-1; for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB"); break;} case 38:{ //up var preMBarX=new Array(4); var preMBarY=new Array(4); var cx=Math.round((BX[0]+BX[1]+BX[2]+BX[3])/4); var cy=Math.round((BY[0]+BY[1]+BY[2]+BY[3])/4); for(i=0;i<4;i++){ preMBarX[i]=Math.round(cx-cy+BY[i]); preMBarY[i]=Math.round(cx+cy-BX[i]); if(preMBarX[i]<0 || preMBarX[i]>9 || preMBarY[i]<0 || preMBarY[i]>15)return; if(getClass(preMBarX[i],preMBarY[i])=="SB")return; } for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK"); for(i=0;i<4;i++){ BX[i]=preMBarX[i]; BY[i]=preMBarY[i]; } for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB"); break;} case 39:{ //right for(i=0;i<4;i++)if(BX[i]==9)return; for(i=0;i<4;i++)if(getClass(BX[i]+1,BY[i])=="SB")return; for(i=0;i<4;i++)setClass(BX[i],BY[i],"BK"); for(i=0;i<4;i++)BX[i]=BX[i]+1; for(i=0;i<4;i++)setClass(BX[i],BY[i],"MB"); break;} case 40:{ //down moveBar(); break;} } } function delLine() { for(i=0;i<4;i++)setClass(BX[i],BY[i],"SB"); for(j=0;j<16;j++){ dLine=true; for(i=0;i<9;i++){ if(getClass(i,j)!="SB"){ dLine=false; break; } } if(dLine){ score=score+100; for(k=j;k>0;k--) for(l=0;l<10;l++) setClass(l,k,getClass(l,k-1)); for(l=0;l<10;l++)setClass(l,0,"BK"); } } randBar(); speed=Math.floor(score/3000)+1; outTime=1100-speed*100; scoreBar.innerHTML="Score : " + score; speedBar.innerHTML="Speed : " + speed; window.clearInterval(mTimer); mTimer=window.setInterval("moveBar()",outTime); } function getClass(x,y){return GameBar.children[y].children[x].className;} function setClass(x,y,cName){GameBar.children[y].children[x].class</body></html>