javascript游戏-- 俄罗斯方块 源代码

 

游戏运行地址: 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]]=truebreak;
     }

   
  }

}


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 0break;
     
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" οnclick="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 >
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值