复制代码代码如下:
<! Doctype html> <html> <head> <style type = "text/css">
body {background:#000; Font: 25px/25px 宋体;}
#box {float: left; width: 252px; border:#999 20px ridge; Color:#9f9; Text-Shadow: 2px 3px 1px#0F0; }
#info {float: left; color: #cfc; padding: 24px; }
#next {padding: 8px; lebar: 105px; warna: #9f9; teks-shadow: 2px 3px 1px #0f0; }
</tyle> </head> <body>
<div id = "box"> </div> <div id = "info"> Berikutnya: <div id = "next"> </div> <div id = "text"> </div> </div>
<type skrip = "Teks/JavaScript">
var map = eval ("["+array (23) .join ("0x801,")+"0xfff]");
var tatris = [[0x6600], [0x2222.0xf00], [0xc600.0x2640], [0x6c00.0x4620], [0x4460.0x2e0.0x6220.0x740], [0x2260.0x6220.0x740], [0x2260.0x6220.0x740], [0x2260.0x6220. , 0x2320.0x2700]];
var char = {x: "/u3000", s: "/u25a0", t: "/u25a1"};
var keycom = {"38": "rotate (1)", "40": "down ()", "37": "Move (2,1)", "39": "Move (0,5, -1) "," 32 ":" 0; PAUSE =! PAUSE "};
var dia, pos, bak, run, next, pause = false, info = {speed: 1, baris: 0, skor: 0};
fungsi 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 = "skor:"+info.score+"<br/> <br/> baris:"+info.lines+"<br/> <br/> kecepatan:"+info. kecepatan;
putar (0);
run = setInterval ("jeda || down ()", ~~ (math.pow (1.3,12-info.speed)*30+20));
}
function over () {
document.onkeydown = null;
peringatan ("Game Over");
}
function nextDia () {
next = {d: tatris [~~ (math.random ()*7)], s: ~~ (math.random ()*4)};
}
pembaruan fungsi (t) {
Bak = {fk: pos.fk.slice (0), y: pos.y, x: pos.x, s: pos.s};
if (t) kembali;
untuk (var i = 0, a2 = ""; i <22; i ++)
a2+= peta [i] .toString (2) .slice (1, -1)+"<br/>";
untuk (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. $ _. Panjang-4)+regexp. $ 1+a2.slice (n+regexp. $ 1.length);
document.geteLementById ("box"). innerHtml = a2.replace (/1/g,char.s) .replace (/0/g.char.x);
}
fungsi adalah () {
untuk (var i = 0; i <4; i ++)
if ((pos.fk [i] & peta [pos.y+i])! = 0) return pos = bak;
}
fungsi rotate (r) {
var f = dia [pos.s = (pos.s+r)%dia.length];
untuk (var i = 0; i <4; i ++)
pos.fk [i] = (f >> (12-i*4) & 15) << pos.x;
UPDATE (IS ());
}
function down () {
++ pos.y;
if (is ()) {
untuk (var i = 0, r = 0; i <4 && pos.y+i <22; i ++)
if ((peta [pos.y+i] | = pos.fk [i]) == 0xfff) {
peta.splice (pos.y+i, 1), map.unshift (0x801);
++ info.lines%20 == 0 && info.speed ++, r ++;
}
ClearInterval (jalankan);
if (peta [1]! = 0x801) kembali lebih dari ();
info.score+= ~~ (math.pow (r, 1.5)*10) +2;
awal();
}
memperbarui();
}
function move (t, k) {
pos.x+= k;
untuk (var i = 0; i <4; i ++)
pos.fk [i]*= t;
UPDATE (IS ());
}
document.onkeydown = function (e) {
eval ("jeda ||"+keycom [(e? E: event) .keycode]);
};
nextdia ();
awal();
</script> </body> </html>