复制代码代码如下 :
<! doctype html> <html> <head> <Style type = "text/css">
신체 {배경 :#000; 글꼴 : 25px/25px 宋体;}
#box {float : 왼쪽; 너비 : 252px; 테두리 :#999 20px 릿지; 색상 :#9f9; 텍스트 -Shadow : 2px 3px 1px#0f0; }
#info {float : 왼쪽; 색상 : #cfc; 패딩 : 24px; }
#Next {Padding : 8px; 너비 : 105px; 색상 : #9f9; 텍스트 -Shadow : 2px 3px 1px #0f0; }
</style> </head> <hod>
<div id = "box"> </div> <div id = "info"> 다음 : <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], [0x4460,0x2e0,0x6220,0x740], [0x2260,0x20,0x640,00020,00020,00020,00020,00020,00020,040,00020,00020,040,00020,00020,040,00020 년 , 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, lines : 0, score : 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 = "score :"+info.score+"<br/> <br/> 줄 :"+info.lines+"<br/> <br/> speed :"+info. 속도;
회전 (0);
run = setInterVal ( "pause || down ()", ~~ (math.pow (1.3,12-info.speed)*30+20);
}
() {
document.onkeydown = null;
경고 ( "게임 오버");
}
함수 nextdia () {
다음 = {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) return 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 ());
}
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 (Run);
if (map [1]! = 0x801) return over ();
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 = function (e) {
평가 ( "pause ||"+keycom [(e? e : event) .keyCode]);
};
nextdia ();
시작();
</script> </body> </html>