复制代码代码如下::
<! docType html> <html> <kopf> <style type = "text/css">
Körper {Hintergrund:#000; Schriftart: 25px/25px 宋体;}
#Box {float: links; Breite: 252px; Border:#999 20px Ridge; Farbe:#9f9; Text-Shadow: 2px 3px 1px#0f0; }
#info {float: links; Farbe: #cfc; padding: 24px; }
#Next {padding: 8px; width: 105px; Farbe: #9f9; Text-Shadow: 2px 3px 1px #0f0; }
</style> </head> <body>
<div id = "box"> </div> <div id = "info"> Weiter: <div id = "next"> </div> <div id = "text"> </div> </div>
<script type = "text/javaScript">
var map = eval ("["+array (23) .join ("0x801,")+"0xfff]");
var tatris = [[0x6600], [0x2222,0xf00], [0xc600,0x2640], [0x6c00,0x4620], [0x44660,0x2e0,0x6220,0x740], [0x2260), [0x2260) , 0x2320,0x2700]];
var char = {x: "/u3000", s: "/u25a0", t: "/u25a1"};
var keycom = {"38": "Drehen (1)", "40": "Down ()", "37": "Move (2,1)", "39": "Move (0,5, -1) "," 32 ":" 0; pause =! Pause "};
var dia, pos, bak, run, als nächstes, pause = false, info = {Geschwindigkeit: 1, Zeilen: 0, Punktzahl: 0};
Funktion 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) .lice (-16) .Replace (/..../ G. , "$ & <br/>") .Replace (/1/g,char.t) .Replace (/0/g,char.x);
document.getElementById ("text"). innerHtml = "Score:"+info.score+"<br/> <br/> Zeilen:"+info.lines+"<br/> <br/> Geschwindigkeit:"+info. Geschwindigkeit;
drehen (0);
run = setInterval ("pause || down ()", ~~ (math.pow (1,3,12-info.speed)*30+20));
}
Funktion over () {
document.onkeydown = null;
alarm ("game Over");
}
Funktion NextDia () {
next = {d: tatris [~~ (math.random ()*7)], s: ~~ (math.random ()*4)};
}
Funktion update (t) {
bak = {fk: pos.fk.slice (0), y: pos.y, x: pos.x, s: pos.s};
Wenn (t) zurückkehren;
für (var i = 0, a2 = ""; i <22; i ++)
a2+= map [i] .ToString (2) .Slice (1, -1)+"<br/>";
für (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.
document.getElementById ("Box"). InnerHtml = a2.Replace (/1/g,char.s) .Replace (/0/g,char.x);
}
Funktion ist () {
für (var i = 0; i <4; i ++)
if ((pos.fk [i] & map [pos.y+i])! = 0) return pos = bak;
}
Funktion drehen (r) {
var f = dia [pos.s = (pos.s+r)%Dia.Length];
für (var i = 0; i <4; i ++)
pos.fk [i] = (f >> (12-i*4) & 15) << pos.x;
update (is ());
}
Funktion Down () {
++ pos.y;
if (ist ()) {
für (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 (Lauf);
if (map [1]! = 0x801) kehre über () zurück;
info.score+= ~~ (math.pow (r, 1,5)*10) +2;
Start();
}
aktualisieren();
}
Funktionsbewegung (t, k) {
pos.x+= k;
für (var i = 0; i <4; i ++)
pos.fk [i]*= t;
update (is ());
}
document.onkeydown = function (e) {
eval ("pause ||"+keycom [(e? E: Ereignis) .KeyCode]);
};
NextDia ();
Start();
</script> </body> </html>