游戏运行地址: http://www.uptoday.cn/fun/eluosi
获取源代码:在http://www.uptoday.cn/fun/eluosi/页面鼠标右键“查看源代码”
<!
DOCTYPE HTML PUBLIC
"
-//W3C//DTD HTML 4.0 Transitional//EN
"
>
<
HTML
><
HEAD
>
<
TITLE
>
俄罗斯方块
</
TITLE
>
<
META http
-
equiv
=
Content
-
Type content
=
"
text/html; charset=gb2312
"
>
<
META content
=
"
MSHTML 6.00.2900.3059
"
name
=
GENERATOR
>
<
META content
=
"
乐不思学
"
name
=
Author
>
<
META content
=
""
name
=
Keywords
>
<
META content
=
""
name
=
Description
></
HEAD
>
<
style
>

td
...
{width: 20px;height:20px;}

#box
...
{width:510px;1px solid #fff;}

#main
...
{float:left;width:340px;}

#left
...
{float:right;width:150px;padding:5px;}

#left1
...
{width:150px;border:1px solid #fff;padding:5px;color:#66CC99;}

#left2
...
{width:150px;color:#0066FF;padding:5px;}

#count_score
...
{color:yellow;}

#buttonkey
...
{margin-left:4px;}
</
style
>
<
BODY onkeydown
=
"
control()
"
onkeypress
=
"
addspeed()
"
rightMargin
=
50
leftMargin
=
200
topMargin
=
8
>
<
p
>
<
SCRIPT language
=
JavaScript src
=
"
http://www.uptoday.cn/fun/playrecord.js
"
></
SCRIPT
>
<
SCRIPT language
=
JavaScript
>

/**/
/*********************************************************************
作者:乐不思学 gsx123@gmail.com QQ:254539697
主页:http://www.uptoday.cn
日期:2007-10-31 完成
功能:纯JAVASCRIPT代码游戏 - 俄罗斯方块
************************************************************************/


/**/
/* 常量 */
var
TDX
=
18
;
//
竖行格数
var
TDY
=
12
;
//
横行格数
var
speed
=
300
;
//
下降速度
var
highspeed
=
90
;
//
快速下降速度
var
body_back_COLOR
=
"
#000
"
;
//
页面背景颜色
var
back_COLOR
=
"
#000
"
;
//
背景颜色
var
next_back_COLOR
=
""
;
//
预告框背景色
var
side_COLOR
=
"
#996600
"
;
//
围栏颜色
var
msgGameOver
=
"
GAME OVER !
"
;
var
msg_start
=
"
开 始
"
;
var
msg_stop
=
"
暂 停
"
;

var
boom_num
=
3
;
//
炸弹数
var
mod
=
0
;
//
难度增加模式
var
q;
//
时钟
var
linesup_speed
=
15000
;
var
intlinesup
=
1
;
var
timer
=
"
1
"
;
var
level
=
new
Array(
1000
,
2000
,
3000
,
4000
,
5000
);
//
升级分数
document.write(
"
<style>td {background-color:
"
+
back_COLOR
+
"
;}body{background-color:
"
+
body_back_COLOR
+
"
;}</style>
"
);
//
********************//

/**/
/* 全局变量*/
var
now_obj;
//
当前物体
var
next_obj;
//
下一物体
var
isStart
=
false
;
//
是否开始了游戏
var
isEnd
=
false
;
//
是否游戏结束
var
count_line
=
0
;
//
消除的行数
var
count_score
=
0
;
//
记分
var
glo_statu
=
new
Array();
//
背景单元格状态 false为空
var
obj_member
=
new
Array();
//
物体成员
var
d
=
document.getElementById;
for
(i
=
0
;i
<
13
;i
++
)

...
{
obj_member[i]=new Array();
}

for
(i
=-
4
;i
<=
TDX;i
++
)
//
初始化背景单元格状态

...
{ glo_statu[i]=new Array();
for(j=0;j<=TDY;j++)

...{
if(j==0||j==TDY||i==TDX)
glo_statu[i][j]=true;

else ...{glo_statu[i][j]=false;}
}
}
//
**********************************************************************************//

/**/
/* 定义对象*/
function
obje(color,length,style,type,x0,y0,getxy)

...
{
this.color=color; //颜色
this.length=length; //单元格数
this.style=style; //样式
this.type=type; //4形态
var x=new Array(); //每格x坐标
var y=new Array(); //每格y坐标
x[0]=x0; //首格
y[0]=y0;
this.x=x;
this.y=y;
this.getxy=getxy; //另三格坐标相对首格的偏移量
this.build=buildfunction; //计算另三格坐标
}

function
buildfunction()
//
由偏移量构造另三格坐标

...
{
with(this)

...{
x[1]=x[0]+getxy[0];
y[1]=y[0]+getxy[1];
x[2]=x[0]+getxy[2];
y[2]=y[0]+getxy[3];
x[3]=x[0]+getxy[4];
y[3]=y[0]+getxy[5];
}
}

var
objNum
=
0
;
//
//
[1][2] [2][0][3] [3]
//
[0] [1] [0] [1]
//
[3] [2][1] [3][0][2]
//
var
tt
=
new
Array();
var
color
=
"
red
"
;
var
len
=
4
;
var
sty
=
0
;
var
x0
=-
2
;
var
y0
=
5
;
tt[
0
]
=
new
Array(
-
1
,
-
1
,
-
1
,
0
,
1
,
0
);
tt[
1
]
=
new
Array(
1
,
-
1
,
0
,
-
1
,
0
,
1
)
tt[
2
]
=
new
Array(
1
,
1
,
1
,
0
,
-
1
,
0
);
tt[
3
]
=
new
Array(
-
1
,
1
,
0
,
1
,
0
,
-
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
[2][1] [1] [3]
//
[0] [2][0][3] [0] [3][0][2]
//
[3] [1][2] [1]
//
color
=
"
#CC6666
"
;sty
++
;
tt[
0
]
=
new
Array(
-
1
,
1
,
-
1
,
0
,
1
,
0
);
tt[
1
]
=
new
Array(
-
1
,
-
1
,
0
,
-
1
,
0
,
1
)
tt[
2
]
=
new
Array(
1
,
-
1
,
1
,
0
,
-
1
,
0
);
tt[
3
]
=
new
Array(
1
,
1
,
0
,
1
,
0
,
-
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
[2] [3] [1]
//
[1][0][3] [2][0] [3][0][1] [0][2]
//
[1] [2] [3]
//
color
=
"
blue
"
;sty
++
;
tt[
0
]
=
new
Array(
0
,
-
1
,
-
1
,
0
,
0
,
1
);
tt[
1
]
=
new
Array(
1
,
0
,
0
,
-
1
,
-
1
,
0
)
tt[
2
]
=
new
Array(
0
,
1
,
1
,
0
,
0
,
-
1
);
tt[
3
]
=
new
Array(
-
1
,
0
,
0
,
1
,
1
,
0
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;
//
[3] [3]
//
[0] [0]
//
[1][2][0][3] [2] [1][2][0][3] [2]
//
[1] [1]
//
color
=
"
green
"
;sty
++
;
tt[
0
]
=
new
Array(
0
,
-
2
,
0
,
-
1
,
0
,
1
);
tt[
1
]
=
new
Array(
2
,
0
,
1
,
0
,
-
1
,
0
);
tt[
2
]
=
new
Array(
0
,
-
2
,
0
,
-
1
,
0
,
1
);
tt[
3
]
=
new
Array(
2
,
0
,
1
,
0
,
-
1
,
0
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;
//
//
[1] [2][3] [1] [2][3]
//
[0][2] [1][0] [0][2] [1][0]
//
[3] [3]
//
color
=
"
#660099
"
;sty
++
;
tt[
0
]
=
new
Array(
-
1
,
0
,
0
,
1
,
1
,
1
);
tt[
1
]
=
new
Array(
0
,
-
1
,
-
1
,
0
,
-
1
,
1
);
tt[
2
]
=
new
Array(
-
1
,
0
,
0
,
1
,
1
,
1
);
tt[
3
]
=
new
Array(
0
,
-
1
,
-
1
,
0
,
-
1
,
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
//
[0][1]
//
[2][3]
//
color
=
"
yellow
"
;sty
++
;
tt[
0
]
=
new
Array(
0
,
1
,
1
,
0
,
1
,
1
);
tt[
1
]
=
new
Array(
0
,
1
,
1
,
0
,
1
,
1
);
tt[
2
]
=
new
Array(
0
,
1
,
1
,
0
,
1
,
1
);
tt[
3
]
=
new
Array(
0
,
1
,
1
,
0
,
1
,
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
[1] [1] [1][0]
//
[2][0] [1][0] [2][0] [2][3]
//
[3] [2][3] [3]
//
color
=
"
#999966
"
;sty
++
;
tt[
0
]
=
new
Array(
-
1
,
0
,
0
,
-
1
,
1
,
-
1
);
tt[
1
]
=
new
Array(
0
,
-
1
,
1
,
0
,
1
,
1
);
tt[
2
]
=
new
Array(
-
1
,
0
,
0
,
-
1
,
1
,
-
1
);
tt[
3
]
=
new
Array(
0
,
-
1
,
1
,
0
,
1
,
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;
//
7
//
//
[2][3]
//
[0] [2]
//
[1] [3] [0][1]
//
color
=
"
#66FF66
"
;sty
++
;
tt[
0
]
=
new
Array(
1
,
0
,
0
,
2
,
1
,
2
);
tt[
1
]
=
new
Array(
0
,
1
,
-
2
,
0
,
-
2
,
1
);
tt[
2
]
=
new
Array(
1
,
0
,
0
,
2
,
1
,
2
);
tt[
3
]
=
new
Array(
0
,
1
,
-
2
,
0
,
-
2
,
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
[1] [2][3]
//
[0] [2]
//
[3] [1][0]
//
color
=
"
#66FF66
"
;sty
++
;
tt[
0
]
=
new
Array(
-
1
,
0
,
0
,
2
,
1
,
2
);
tt[
1
]
=
new
Array(
0
,
-
1
,
-
2
,
0
,
-
2
,
1
);
tt[
2
]
=
new
Array(
-
1
,
0
,
0
,
2
,
1
,
2
);
tt[
3
]
=
new
Array(
0
,
-
1
,
-
2
,
0
,
-
2
,
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;
//
//
[1] [3] [3] [2] [2]
//
[0] [1][0] [0] [0][1]
//
[2] [3] [2] [1] [3]
//
color
=
"
#66FF66
"
;sty
++
;
tt[
0
]
=
new
Array(
-
1
,
0
,
1
,
-
1
,
1
,
1
);
tt[
1
]
=
new
Array(
0
,
-
1
,
1
,
1
,
-
1
,
1
);
tt[
2
]
=
new
Array(
1
,
0
,
-
1
,
-
1
,
-
1
,
1
);
tt[
3
]
=
new
Array(
0
,
1
,
-
1
,
-
1
,
1
,
-
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
[1][0][2] [2] [3] [1]
//
[0] [3] [3] [0]
//
[3] [1] [2][0][1] [2]
//
color
=
"
#66FF66
"
;sty
++
;
tt[
0
]
=
new
Array(
0
,
-
1
,
0
,
1
,
2
,
0
);
tt[
1
]
=
new
Array(
1
,
0
,
-
1
,
0
,
0
,
2
);
tt[
2
]
=
new
Array(
0
,
-
1
,
0
,
1
,
-
2
,
0
);
tt[
3
]
=
new
Array(
1
,
0
,
-
1
,
0
,
0
,
-
2
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;
//
//
[1]
//
[2] [0]
//
[3]
//
color
=
"
#66FF66
"
;sty
++
;
tt[
0
]
=
new
Array(
-
1
,
-
1
,
0
,
-
2
,
1
,
-
1
);
tt[
1
]
=
new
Array(
-
1
,
-
1
,
0
,
-
2
,
1
,
-
1
);
tt[
2
]
=
new
Array(
-
1
,
-
1
,
0
,
-
2
,
1
,
-
1
);
tt[
3
]
=
new
Array(
-
1
,
-
1
,
0
,
-
2
,
1
,
-
1
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;

//
//
[1] [0]
//
//
[3] [2]
//
color
=
"
#33CCCC
"
;sty
++
;
tt[
0
]
=
new
Array(
0
,
-
2
,
2
,
0
,
2
,
-
2
);
tt[
1
]
=
new
Array(
0
,
-
2
,
2
,
0
,
2
,
-
2
);
tt[
2
]
=
new
Array(
0
,
-
2
,
2
,
0
,
2
,
-
2
);
tt[
3
]
=
new
Array(
0
,
-
2
,
2
,
0
,
2
,
-
2
);
for
(i
=
0
;i
<
4
;i
++
)

...
{
obj_member[sty][i]=new obje(color,len,sty,i,x0,y0,tt[i]);
obj_member[sty][i].build();
}
objNum
++
;


var
temp1
=
Math.floor(Math.random()
*
(
7
));
var
temp2
=
Math.floor(Math.random()
*
(
3
));
now_obj
=
obj_member[temp1][temp2];
//
初始化当前物体!!
var
boom_added
=
false
;
function
getNextObj()
//
{{生成下一物体}}

...
{
if(count_score>=level[4]) //难度控制

...{ if(mod=="0")...{speed=90;}
else if(mod=="2")

...{
if(timer!="1"&&intlinesup==5)

...{clearInterval(timer);timer=setInterval("linesup()",5000);intlinesup=6;}
}
else thenum=objNum;
document.getElementById("level").innerHTML=6;

if(boom_added)...{boom_added=false;boom_num++;pic="";
for(k=1;k<=boom_num;k++)
pic+=" ※";
document.getElementById("boom").innerHTML=pic;
}
}

else if(count_score>=level[3]&&count_score<level[4]) //难度控制

...{ if(mod=="0")...{speed=110;}
else if(mod=="2")

...{
if(timer!="1"&&intlinesup==4)

...{clearInterval(timer);timer=setInterval("linesup()",6500);intlinesup=5;}
}
else thenum=objNum-1;
document.getElementById("level").innerHTML=5;

if(!boom_added)...{boom_added=true;boom_num++;pic="";
for(k=1;k<=boom_num;k++)
pic+=" ※";
document.getElementById("boom").innerHTML=pic;
}
}

else if(count_score>=level[2]&&count_score<level[3])

...{ if(mod=="0")...{speed=150;}
else if(mod=="2")

...{if(timer!="1"&&intlinesup==3)...{clearInterval(timer);timer=setInterval("linesup()",9000);intlinesup=4;}}
else thenum=(objNum-2);
document.getElementById("level").innerHTML=4;}

else if(count_score>=level[1]&&count_score<level[2])

...{ if(mod=="0")...{speed=180;}
else if(mod=="2")

...{if(timer!="1"&&intlinesup==2)...{clearInterval(timer);timer=setInterval("linesup()",12000);intlinesup=3;}}
else thenum=(objNum-3);
document.getElementById("level").innerHTML=3;}

else if(count_score>=level[0]&&count_score<level[1])

...{ if(mod=="0")...{speed=220;}
else if(mod=="2")

...{if(timer=="1")...{timer=setInterval("linesup()",15000);intlinesup=2;}}
else thenum=(objNum-4);
document.getElementById("level").innerHTML=2;}
else

...{
thenum=7;}
var temp1=Math.floor(Math.random()*(thenum));
var temp2=Math.floor(Math.random()*(3));
next_obj=obj_member[temp1][temp2];
}
getNextObj();
//
初始化下一物体!!

//
**********************************************************************************//

/**/
/* 函数 /
/*-------------------------*/
function
control()
//
键盘控制

...
{
var key=event.keyCode;
switch(key)

...{
case 37:moveleft(now_obj); break; // ←
case 39:moveright(now_obj); break; // →
case 40: // ↓
// if(!isStart)
// autodown(now_obj);
//else
// {
stop();
q=setInterval("movedown(now_obj)",highspeed);
// }
break;
case 38:turn(now_obj); break; // ↑
case 32:boom(); break; // ↑
}
}
function
addspeed()
//
加速

...
{
if(event.keyCode==40&&isStart)

...{
speed=highspeed;
}
}
function
highspeed()
//

...
{

if(!q)...{autodown();}

else...{
stop();
q=setInterval("movedown(now_obj)",highspeed);
}
}

function
show(obj)
//
显示物体

...
{
for(i=0;i<obj.length;i++)

...{if(obj.x[i]>=0)

...{
document.getElementById("d_"+obj.x[i]+"_"+obj.y[i]).style.background=obj.color;
}
glo_statu[obj.x[i]][obj.y[i]]=true;
}
}
function
hid(obj)
//
消失物体

...
{
for(i=0;i<obj.length;i++)

...{
if(obj.x[i]>=0)

...{
document.getElementById("d_"+obj.x[i]+"_"+obj.y[i]).style.background=back_COLOR;
}
glo_statu[obj.x[i]][obj.y[i]]=false;
}
}

function
array_walk(arr,flag)
//
处理数组中每一项

...
{
for(i=0;i<arr.length;i++)

...{
switch(flag)

...{
case "+":arr[i]++; break;
case "-":arr[i]--; break;
case "false": glo_statu[arr.x[i]][arr.y[i]]=false;break;
case "true" : glo_statu[arr.x[i]][arr.y[i]]=true; break;
}
}
}

function
canmove(obj,to)
//
能否继续移动 ??

...
{
var can=true;

array_walk(obj,"false");

switch(to)

...{
case "down": array_walk(obj.x,"+");break;
case "left": array_walk(obj.y,"-");break;
case "right":array_walk(obj.y,"+");break;
}

for(i=0;i<obj.x.length;i++)

...{
if(glo_statu[obj.x[i]][obj.y[i]]==true)

...{
can=false;
break;
}
}

switch(to)

...{
case "down": array_walk(obj.x,"-");break;
case "left": array_walk(obj.y,"+");break;
case "right":array_walk(obj.y,"-");break;
}
array_walk(obj,"true");
return can;
}

function
autodown()
//
开始自动下移 start

...
{
if(!isEnd)

...{
q=setInterval("movedown(now_obj)",speed);
if(!isStart)isStart=true;
}
document.getElementById("butt").value=msg_stop;

}


function
stop()
...
{clearInterval(q);}
//
停止 stop
function
movedown(obj)
//
下移 ↓↓

...
{

if(canmove(obj,"down"))

...{
hid(obj);
for(i=0;i<obj.length;i++)

...{
obj.x[i]++;

}
show(obj);
}
else //触底

...{
stop();
check_clearline(obj);

for(y=0;y<obj.length;y++) //判断游戏结束

...{

if(obj.x[y]<2)...{isEnd=true;}

else...{isEnd=false;}
}
if(isEnd)

...{
window.alert(msgGameOver);
document.getElementById("butt").value="重来";
}


else...{
now_obj=next_obj;
now_obj.x[0]=x0;now_obj.y[0]=y0;now_obj.build();
fornext(next_obj,"hidden");
getNextObj();
fornext(next_obj,"show");
//show(now_obj);
//window.alert(now_obj.x);
autodown();
}
}
}

function
check_clearline(obj)
//
是否有满行,清除行

...
{
var clearnum=0;
var c=0;
var max=obj.x[0];var min=obj.x[0];
for(i=1;i<obj.length;i++)

...{
if(obj.x[i]>max)max=obj.x[i];
else if(obj.x[i]<min)min=obj.x[i];
}
for(i=max;i>=min;i--)

...{
var isfull=true;
for(j=1;j<TDY;j++)

...{
if(glo_statu[i][j]==false)isfull=false;
}
if(isfull)

...{
clearline(i);
clearnum++;
lines_down(i);
i=max+1;
//if(mod=="2")linesup();
}
}
count_score=parseInt(document.getElementById("count_score").innerHTML);
switch(clearnum) //加分

...{
case 0: break;
case 1: count_score+=100;break;
case 2: count_score+=300;break;
case 3: count_score+=500;break;
case 4: count_score+=800;break;
}
document.getElementById("count_score").innerHTML=count_score;
}

function
clearline(i)
//
清除行

...
{
for(j=1;j<TDY;j++)

...{
document.getElementById("d_"+i+"_"+j).style.background=back_COLOR;
glo_statu[i][j]=false;
//document.getElementById("d_"+i+"_"+j).innerHTML=glo_statu[i][j];
}
line=parseInt(document.getElementById("count_line").innerHTML);
line+=1;
document.getElementById("count_line").innerHTML=line;
}

function
lines_down(lineKilled)
//
清除行后下移其上方块

...
{

for(i=lineKilled-1;i>0;i--)

...{
for(j=1;j<TDY;j++)

...{
if(glo_statu[i][j])

...{
temp=i;
var tempcolor=document.getElementById("d_"+i+"_"+j).style.background;
document.getElementById("d_"+i+"_"+j).style.background=back_COLOR;
glo_statu[temp][j]=false;
temp++;
glo_statu[temp][j]=true;
document.getElementById("d_"+temp+"_"+j).style.background=tempcolor;
}
}
}
}


function
moveleft(obj)
//
左移 ← ←

...
{
if(canmove(obj,"left"))
//if(true)

...{
hid(obj);
for(i=0;i<obj.length;i++)

...{
obj.y[i]--;

}
show(obj);
}

}

function
moveright(obj)
//
右移 → →

...
{
if(canmove(obj,"right"))
// if(true)

...{
hid(obj);
for(i=0;i<obj.length;i++)

...{
obj.y[i]++;

}
show(obj);
}

}

function canturn(obj) //
{
var can=true;
array_walk(obj,"false");
ty=obj.type;
typ=obj.type;
typ++;
if(typ==4){typ=0;}
styl=obj.style;
temp_obj=obj_member[styl][typ];
temp_obj.x[0]=obj.x[0];
temp_obj.y[0]=obj.y[0];
temp_obj.build();
for(i=0;i<obj.x.length;i++)
{
if(glo_statu[temp_obj.x[i]][temp_obj.y[i]]==true)
{
can=false;
break;
}
}
temp_obj=obj_member[styl][ty];
temp_obj.x[0]=obj.x[0];
temp_obj.y[0]=obj.y[0];
temp_obj.build();
obj=temp_obj;
array_walk(obj,"true");
return can;
}
function turn(obj) //旋转
{
if(canturn(obj))
{
typ=obj.type;
typ++;
if(typ==4){typ=0;}
styl=obj.style;
temp_obj=obj_member[styl][typ];
temp_obj.x[0]=obj.x[0];
temp_obj.y[0]=obj.y[0];
temp_obj.build();
hid(obj);
now_obj=temp_obj;
show(now_obj);
}
}
function
linesup()
//
抬升

...
{hid(now_obj);
for(i=2;i<TDX;i++)

...{
for(j=1;j<TDY;j++)

...{
if(glo_statu[i][j])

...{
temp=i;
var tempcolor=document.getElementById("d_"+i+"_"+j).style.background;
document.getElementById("d_"+i+"_"+j).style.background=back_COLOR;
glo_statu[temp][j]=false;
temp--;
glo_statu[temp][j]=true;
// window.alert("d_"+temp+"_"+j);
document.getElementById("d_"+temp+"_"+j).style.background=tempcolor;
}
}
}
for(j=1;j<TDY;j++)

...{
randtemp=Math.floor(Math.random()*(2)); //window.alert(randtemp);

if(randtemp==1)...{glo_statu[TDX-1][j]=true;document.getElementById("d_"+(TDX-1)+"_"+j).style.background="#CC00CC";}

else ...{glo_statu[TDX-1][j]=false;document.getElementById("d_"+(TDX-1)+"_"+j).style.background=back_COLOR;}
}
show(now_obj);
}

//
**********************************************************************************//
document.write(
"
<div id=box align=center><div id=main><table>
"
)
var
css;

for
(i
=
0
;i
<=
TDX;i
++
)

...
{

document.write("<tr>")
for(j=0;j<=TDY;j++)

...{

if(j==0||j==TDY||i==TDX)...{css=side_COLOR;} else...{css=back_COLOR;}//围栏颜色
document.write("<td id=d_"+i+"_"+j+" style="background:"+css+""></td>")
}
document.write("</tr>")
}
document.write(
"
</table></div>
"
);

document.write(
"
<div id=left><div id=left1><table>
"
);
for
(i
=
0
;i
<
5
;i
++
)

...
{
document.write("<tr>")
for(j=0;j<5;j++)

...{
document.write("<td id=n_"+i+"_"+j+" style="background:"+next_back_COLOR+""></td>")
}
document.write("</tr>")
}
document.write(
"
</table>
"
);

function
fornext(obj,color)
//
显示/隐藏下一物体

...
{

if(color=="hidden")...{color=next_back_COLOR;}

else if(color=="show")...{color=obj.color;}
var px=new Array();
var py=new Array();
px[0]=2;py[0]=2;
px[1]=px[0]+obj.getxy[0];
py[1]=py[0]+obj.getxy[1];
px[2]=px[0]+obj.getxy[2];
py[2]=py[0]+obj.getxy[3];
px[3]=px[0]+obj.getxy[4];
py[3]=py[0]+obj.getxy[5];
for(i=0;i<px.length;i++)
document.getElementById("n_"+px[i]+"_"+py[i]).style.background=color;
}

fornext(next_obj,
"
show
"
);

function
button(t)
//
按钮

...
{

if(t==msg_start)...{
autodown(now_obj);
document.getElementById("butt").value=msg_stop;
mod=document.getElementById("mod").value;
}

else if(t==msg_stop)...{
stop();
document.getElementById("butt").value=msg_start;
}
else
document.location.reload();
document.body.focus();
}
pic
=
""
;
for
(k
=
1
;k
<=
boom_num;k
++
)
pic
+=
"
※
"

</
SCRIPT
>
<
BR
>
炸弹:
<
span id
=
"
boom
"
><
SCRIPT LANGUAGE
=
"
JavaScript
"
>
document.write(pic);
</
SCRIPT
></
span
>
<
BR
>
行数:
<
span id
=
"
count_line
"
>
0
</
span
><
BR
>
得分:
<
span id
=
"
count_score
"
>
0
</
span
><
BR
>
等级:
<
span id
=
"
level
"
>
1
</
span
>
</
div
>
<
div id
=
"
left2
"
>




<
div id
=
"
buttonkey
"
>
升级后:
<
SELECT NAME
=
""
id
=
"
mod
"
onchange
=
"
mod=this.value;document.body.focus();
"
>
<
OPTION VALUE
=
"
0
"
SELECTED
>
加 速
</
OPTION
>
<
OPTION VALUE
=
"
1
"
>
加方块
</
OPTION
>
<
OPTION VALUE
=
"
2
"
>
抬 升
</
OPTION
>
</
SELECT
>
<
br
>
<
SCRIPT LANGUAGE
=
"
JavaScript
"
>
document.write(
"
<INPUT TYPE="button" value="
"
+
msg_start
+
"
" id="butt" onclick="button(this.value)">
"
);
</
SCRIPT
>
<
BR
>
</
div
><
BR
><
BR
><
BR
>
键盘
<
BR
>
← ↓ → 移动
<
BR
>
↑ 旋转
<
BR
>
空格 使用炸弹
</
div
>

</
div
>
</
div
>

</
P
></
BODY
></
HTML
>
<
SCRIPT LANGUAGE
=
"
JavaScript
"
>
function
boom()
//
炸弹

...
{
if(boom_num>0)

...{
boom_num--;

max=now_obj.x[0];
for(i=1;i<now_obj.length;i++)

...{
if(now_obj.x[i]>max)max=now_obj.x[i];
}
t=max+1;
n=now_obj.y[0];
while(glo_statu[t][n]==false)t++;

for(i=n-3;i<=n+3;i++)

...{
for(j=t-3;j<=t+3;j++)

...{
if(i>0&&i<TDY&&j>0&&j<TDX)

...{
glo_statu[j][i]=false;
document.getElementById("d_"+j+"_"+i).style.background=back_COLOR;
}
}

}
pic="";
for(k=1;k<=boom_num;k++)
pic+=" ※"
document.getElementById("boom").innerHTML=pic;
//autodown();
}

}



</
SCRIPT
>