document.body.innerHTML += '' //游戏场地
document.body.innerHTML += '';//预显表
document.body.innerHTML += '';//活动层
var element_html = '
"; | "; |
obj_html += "
element_stage.innerHTML = element_html;
obj_stage.innerHTML = obj_html;
document.body.innerHTML +='
第 1 局
消除行数
0
游戏得分
0
var map = new Array( //地图
"111000000000000111","111000000000000111","111000000000000111","111000000000000111","111000000000000111",
"111000000000000111","111000000000000111","111000000000000111","111000000000000111","111000000000000111",
"111000000000000111","111000000000000111","111000000000000111","111000000000000111","111000000000000111",
"111000000000000111","111000000000000111","111000000000000111","111000000000000111","111000000000000111",
"222222222222222222","222222222222222222"
);
//-------------L------------// //演员表
var L1 = new Array("0000","1000","1000","1100");
var L2 = new Array("0000","0000","0010","1110");
var L3 = new Array("0000","0110","0010","0010");
var L4 = new Array("0000","1110","1000","0000");
//-------------L-------------//
//-------------J------------//
var J1 = new Array("0000","0010","0010","0110");
var J2 = new Array("0000","0000","1110","0010");
var J3 = new Array("0000","1100","1000","1000");
var J4 = new Array("0000","0000","1000","1110");
//-------------J-------------//
//-------------Z------------//
var Z1 = new Array("0000","0000","1100","0110");
var Z2 = new Array("0000","0100","1100","1000");
var Z3 = new Array("0000","0000","1100","0110");
var Z4 = new Array("0000","0100","1100","1000");
//-------------Z-------------//
//-------------S------------//
var S1 = new Array("0000","0000","0110","1100");
var S2 = new Array("0000","0100","0110","0010");
var S3 = new Array("0000","0000","0110","1100");
var S4 = new Array("0000","0100","0110","0010");
//-------------S-------------//
//-------------T------------//
var T1 = new Array("0000","0000","0100","1110");
var T2 = new Array("0000","0010","0110","0010");
var T3 = new Array("0000","1110","0100","0000");
var T4 = new Array("0000","1000","1100","1000");
//-------------T-------------//
//-------------M------------//
var M1 = new Array("0000","0000","1100","1100");
var M2 = new Array("0000","0000","1100","1100");
var M3 = new Array("0000","0000","1100","1100");
var M4 = new Array("0000","0000","1100","1100");
//-------------M-------------//
//-------------I------------//
var I1 = new Array("1000","1000","1000","1000");
var I2 = new Array("0000","0000","0000","1111");
var I3 = new Array("0010","0010","0010","0010");
var I4 = new Array("0000","0000","0000","1111");
//-------------I-------------//
//-------------演员位置表-------------//
var players = new Array("I","J","T","L","Z","S","M");
//----生成地图--------//
function get_color(color_value)
{
if(color_value=="1"||color_value=="2")
return "#000080";
else
return "#000000";
}
var map_html = '
stage.innerHTML = map_html
//----生成地图--------//
/****************************************** 上面是准备的代码****************************************************/
function Y_X(y,x) //设置角的对象
{
this.x = x;
this.y = y;
}
var game_l_u_angle = new Y_X(0,6); //方快初始 左上角 和 右上角 的 x y 坐标
var game_r_d_angle = new Y_X(3,9);
var left_up_angle = new Y_X(game_l_u_angle.y,game_l_u_angle.x); //现在的 左上角的 x y 坐标
var right_down_angle = new Y_X(game_r_d_angle.y,game_r_d_angle.x); //现在的 右上角 的 x y 坐标
var block_color_1 = "#0099FF"; //现在的方块的颜色
var block_color_0 = ""; //背景颜色
var map_color_1 = "#000080"; //map 背景颜色 1
var map_color_0 = "#000000"; //背景颜色 0
var block_width = "22"; //方块 的 边长
var block_height = "20";
var game_speed = 540 //游戏速度
var game_max_speed = Math.floor(game_speed/20);
var SHAPES = new Array("I","M","Z","J","T","S","L"); // 方块形状数组
var shape_now = SHAPES[returnONE(6)]; //现在的方块形状
var shape_will = SHAPES[returnONE(6)]; //将来的方块形状
var shape_num = 1;
var obj_start_left = 132; //方块起始位置
var obj_start_top = 0;
var can_move_block = false; //设置用户是否可以移动方块
var can_play = false; //游戏的开始
var one_score = 10; //一个的得分
var block_score = 4*one_score //一个方块的得分
var line_score = ಌ*one_score //一行的得分
/*******************************************上面是数据********************下面是具体运行 函数************************/
//------------返回任意数--------------------//
function returnONE(JSnum){
JSnum = Math.round(JSnum*Math.random()*100/100);
return JSnum;
}
//--------------返回最高-----------------------//
function return_TOP()
{
var block_value = "";
for(h=0;h<4;h++)
{
for(w=0;w<4;w++)
{
block_value = obj_table.rows(h).cells(w).value;
if(block_value=="1")
return (h + left_up_angle.y)
}
}
}
//---------设置 obj 显示 指定 的 type+num 方块 -----------//
function set_block(obj,type,num)
{
var block = eval(type+num); //获得 指定 方块
var block_value = "";
var block_color = "";
for(h=0;h
for(w=0;w
block_value = block[h].charAt(w);
block_color = eval("block_color_" + block_value );
with(obj.rows(h).cells(w))
{
bgColor = block_color;
value = block_value;
}
}
}
}
//-------------使 obj 相对移动--------------//
function move_block_by(x,y)
{
left_up_angle.x += x;
left_up_angle.y += y;
right_down_angle.x += x;
right_down_angle.y += y;
obj_stage.style.pixelLeft = left_up_angle.x * block_width;
obj_stage.style.pixelTop = left_up_angle.y * block_height;
}
//---------------判断 是否 可以 移动 或变形 -------------//
function If_can_move(l_x,l_y,r_x,r_y) //用于常规判断
{
var obj_value = "";
var map_value = "";
var checker = 0;
for(obj_h=0,h=l_y;h<=r_y;h++,obj_h++)
{
for(obj_w=0,w=l_x;w<=r_x;w++,obj_w++)
{
obj_value = obj_table.rows(obj_h).cells(obj_w).value;
map_value = map_table.rows(h).cells(w).value
checker = parseInt(obj_value)+parseInt(map_value);
if(map_value=="2")
{
if(checker>2)
return false;
}
else
{
if(checker>1)
return false;
}
}
}
return true;
}
function test_block(){} //用来生成载block value 的 测试对象
var tester = null;
function If_can_move_test(l_x,l_y,r_x,r_y) //用于变形判断
{
var obj_value = "";
var map_value = "";
var checker = 0;
for(obj_h=0,h=l_y;h<=r_y;h++,obj_h++)
{
for(obj_w=0,w=l_x;w<=r_x;w++,obj_w++)
{
obj_value = eval("tester.value_"+obj_h+"_"+obj_w);
map_value = map_table.rows(h).cells(w).value
checker = parseInt(obj_value) + parseInt(map_value);
if(map_value=="2")
{
if(checker>2)
return false;
}
else
{
if(checker>1)
return false;
}
}
}
return true;
}
//--------------设置背景颜色----------------------//
function set_map_bgcolor(l_x,l_y,r_x,r_y)
{
var obj_value = "";
for(obj_h=0,h=l_y;h<=r_y;h++,obj_h++)
{
for(obj_w=0,w=l_x;w<=r_x;w++,obj_w++)
{
obj_value = obj_table.rows(obj_h).cells(obj_w).value;
if(obj_value=="1")
{
with(map_table.rows(h).cells(w))
{
value = obj_value;
bgColor = eval("block_color_"+obj_value);
}
}
}
}
}
//---------------消除 行 --------------------------------//
function delete_line(l_y,r_y)
{
var value_1_num = 0; //为 1 的块数
var can_delete_num = map[0].length; //可以删除的 value = 1 的 block 的总数
var can_delete = true;
var the_block_value = ""; //现在的block的value
for(h=l_y;h<=r_y;h++)
{
for(w=0;w
the_block_value = map_table.rows(h).cells(w).value
if(the_block_value=="0"||the_block_value=="2")
{
can_delete = false;
}
}
if(can_delete) //如果全部为1的话
{
map_table.deleteRow(h);
map_table.insertRow(0);
for(w=0;w