复制代码代码如下:
<! doctype html> <html> <head> <style type = "text/css">
corpo {background:#000; Fonte: 25px/25px 宋体;}
#box {float: esquerda; largura: 252px; borda:#999 20px Ridge; cor:#9f9; Shadow Text: 2px 3px 1px#0f0; }
#info {float: esquerda; cor: #cfc; preenchimento: 24px; }
#Next {preenchimento: 8px; largura: 105px; cor: #9f9; shadow de texto: 2px 3px 1px #0f0; }
</style> </head> <body>
<div id = "box"> </div> <div id = "info"> próximo: <div id = "next"> </div> <div id = "text"> </div> </div>
<script type = "text/javascript">
var map = avaliar ("["+array (23) .Join ("0x801")+"0xfff]");
var tatris=[[0x6600],[0x2222,0xf00],[0xc600,0x2640],[0x6c00,0x4620],[0x4460,0x2e0,0x6220,0x740],[0x2260,0xe20,0x6440,0x4700],[0x2620,0x720 , 0x2320,0x2700]];
var char = {x: "/u3000", s: "/u25a0", t: "/u25a1"};
var keycom = {"38": "girate (1)", "40": "Down ()", "37": "Move (2,1)", "39": "Move (0,5, -1) "," 32 ":" 0; pausa =! Pause "};
var dia, pos, bak, execute, próximo, pausa = false, info = {speed: 1, linhas: 0, pontuação: 0};
função 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) .Rplace (/.../G. , "$ & <br/>") .place (/1/g,char.t) .Rearplace (/0/g,char.x);
document.getElementById ("text"). innerhtml = "pontuação:"+info.score+"<br/> <br/> linhas:"+info.lines+"<br/> <br/> velocidade:"+info. velocidade;
girar (0);
run = setInterval ("pausa || down ()", ~~ (math.pow (1.3,12-info.speed)*30+20));
}
função sobre () {
document.onkeydown = null;
alerta ("jogo over");
}
função nextDia () {
próximo = {d: tatris [~~ (math.random ()*7)], s: ~~ (math.random ()*4)};
}
Função atualização (t) {
bak = {fk: pos.fk.slice (0), y: pos.y, x: pos.x, s: pos.s};
se (t) retornar;
for (var i = 0, a2 = ""; i <22; i ++)
a2+= mapa [i] .ToString (2) .Slice (1, -1)+"<br/>";
for (var i = 0, n; i <4; i ++)
if (/([^0]+)/. Test (bak.fk [i] .ToString (2) .place (/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);
}
função é () {
for (var i = 0; i <4; i ++)
if ((pos.fk [i] & map [pos.y+i])! = 0) retorna pos = bak;
}
função girar (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) e 15) << pos.x;
atualização (is ());
}
function 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 ++;
}
ClearInterval (execução);
if (mapa [1]! = 0x801) retorna ();
info.score+= ~~ (math.pow (r, 1.5)*10) +2;
começar();
}
atualizar();
}
função move (t, k) {
pos.x+= k;
for (var i = 0; i <4; i ++)
pos.fk [i]*= t;
atualização (is ());
}
document.onkeydown = function (e) {
Eval ("pausa ||"+keycom [(e? E: Event) .KeyCode]);
};
NextDia ();
começar();
</script> </body> </html>