複製代碼代碼如下:
<!doctype html> <html> <head> <style type =“ text/css”>
身體{背景:#000;字體:25px/25px;}
#box {float:left; width:252px; border:#999 20px ridge;顏色:#9f9; text-shadow:2px 3px 1px 1px#0f0; }
#info {float:左;顏色:#cfc; padding:24px; }
#next {padding:8px; width:105px; color:#9f9; text-shadow:2px 3px 1px#0f0; }
</style> </head> <身體>
<div id =“ box”> </div> <div id =“ info”> next:<div id =“ next”> </div> <div id =“ text”> </div> </div> </div>
<腳本類型=“ text/javascript”>
var map = eval(“ [”+array(23).join(“ 0x801,”)+“ 0xfff]”);
var tatris = [[0x6600],[0x2222,0xf00],[0xc600,0x2640],[0x6c00,0x4620],[0x4460,0x2e0,0x2e0,0x6220,0x740],[0x222260,0x60,0x640,0x640,0x640,0x40 ,0x40,0x40, x440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 ,, ,0x2320,0x2700];
var char = {x:“/u3000”,s:“/u25a0”,t:“/u25a1”};
var keycom = {“ 38”:“旋轉(1)”,“ 40”:“ down(),“ 37”:“ move(2,1)”,“ 39”:“移動(0.5,-1) “ ,” 32“:” 0; pause =!pape'};
var dia,pos,bak,run,next,暫停= false,info = {速度:1,行:0,得分:0};
函數start(){
dia = next.d;
bak = pos = {fk:[],y:0,x:4,s:next.s};
NextDia();
document.getElementById(“ next”).InnerHtml =(next.d [Next.s%next.d.length] | 0x10000).toString(2).slice(-16).replace(/..../ g ,“ $&<br/>”).replace(/1/g,char.t).replace(/0/g,char.x);
document.getElementById(“ text”)。innerhtml =“得分:”+info.score+“ <br/> <br/> <br/>行:”+info.lines+“ <br/> <br/> <br /> speed:”+info。速度;
旋轉(0);
run = setInterval(“暫停|| down()”,~~(Math.pow(1.3,12-info.speed)*30+20));
}
函數通過(){
document.onkeydown = null;
警報(“遊戲”);
}
函數nextdia(){
next = {d:tatris [~~(Math.random()*7)],s:~~(Math.random()*4)};
}
功能更新(t){
bak = {fk:pos.fk.slice(0),y:pos.y,x:pos.x,s:pos.s};
如果(t)返回;
for(var i = 0,a2 =“”; i <22; i ++)
a2+= map [i] .tostring(2).slice(1,-1)+“ <br/>”;
for(var i = 0,n; i <4; i ++)
if(/([^0]+)/。test(bak.fk [i] .toString(2).replace(/1/g,char.t)))))))
a2 = a2.substr(0,n =(bak.y+i+1)*15-regexp。$_。length-4)+regexp。$ 1+a2.slice(n+regexp。$ 1.length) ;
document.getElementById(“ box”).InnerHtml = a2.replace(/1/g,char.s).replace(/0/g,char.x);
}
函數為(){
for(var i = 0; i <4; i ++)
if((pos.fk [i]&map [pos.y+i])!= 0)返回pos = bak;
}
函數旋轉(r){
var f = dia [pos.s =(pos.s+r)%dia.length];
for(var i = 0; i <4; i ++)
pos.fk [i] =(f >>(12-i*4)&15)<< pos.x;
更新(IS());
}
功能down(){
++ pos.y;
if(is()){
for(var i = 0,r = 0; i <4 && pos.y+i <22; i ++)
if(((map [pos.y+i] | = pos.fk [i])== 0xfff){
map.splice(pos.y+i,1),map.unshift(0x801);
++ info.lines%20 == 0 && info.speed ++,r ++;
}
clear Interval(run);
if(map [1]!= 0x801)返回();
info.score+= ~~(Math.pow(R,1.5)*10)+2;
開始();
}
更新();
}
功能移動(t,k){
pos.x+= k;
for(var i = 0; i <4; i ++)
pos.fk [i]*= t;
更新(IS());
}
document.onkeydown =函數(e){
eval(“暫停||”+keycom [(e?e:event).keycode]);
};
NextDia();
開始();
</script> </body> </html>