复制代码代码如下:
<! doctype html> <html> <head> <style type = "text/css">
الجسم {الخلفية:#000 ؛ الخط: 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 ؛ العرض: 105px ؛ اللون: #9f9 ؛ النص shadow: 2px 3px 1px #0f0 ؛ }
</style> </head> <body>
<div id = "box"> </viv> <div id = "info"> التالي: <div id = "next"> </viv> <div id = "text"
<script type = "text/javaScript">
var map = eval ("["+array (23). join ("0x801 ،")+"0xfff]") ؛
var tatris = [[0x6600] ، [0x2222،0xf00] ، [0xc600،0x2640] ، [0x6c00،0x4620] ، [0x460،0x2e0،0x6220،0x740] ، [0x2260،0xe20،0x640،0x640،0x4700 ، 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 ؛ توقف مؤقت =! توقف "} ؛
var dia ، pos ، bak ، run ، next ، pause = false ، info = {speed: 1 ، lines: 0 ، score: 0} ؛
وظيفة start () {
ديا = التالي.
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/> السرعة:"+معلومات. سرعة؛
تدوير (0) ؛
Run = setInterval ("Pause || Down ()" ، ~~ (Math.Pow (1.3،12-info.peed)*30+20)) ؛
}
الوظيفة Over () {
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} ؛
إذا (ر) العودة ؛
لـ (var i = 0 ، a2 = "" ؛ i <22 ؛ i ++)
A2+= map [i] .toString (2) .slice (1 ، -1)+"<br/>" ؛
لـ (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) ؛
}
الوظيفة هي () {
لـ (var i = 0 ؛ i <4 ؛ i ++)
if ((pos.fk [i] & map [pos.y+i])! = 0) return pos = bak ؛
}
وظيفة تدوير (ص) {
var f = dia [pos.s = (pos.s+r) ٪ di.length] ؛
لـ (var i = 0 ؛ i <4 ؛ i ++)
pos.fk [i] = (f >> (12-i*4) & 15) << pos.x ؛
تحديث (هو ()) ؛
}
وظيفة Down () {
++ pos.y ؛
if (is ()) {
لـ (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 ؛
لـ (var i = 0 ؛ i <4 ؛ i ++)
pos.fk [i]*= t ؛
تحديث (هو ()) ؛
}
document.onkeydown = function (e) {
eval ("إيقاف التشغيل ||"+keycom [(e؟ e: event) .KeyCode]) ؛
} ؛
Nextdia () ؛
يبدأ()؛
</script> </body> </html>