扫雷[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 hillhero789 的 blog

  }
}
function makeemptyboard(num)
{
 var w=parseint(this.width*20)+parseint(this.width)+1;
 var htmlcode="<table id='board' width='"+w+"' align='center' border='0' cellpadding='0' cellspacing='1' onselectstart='return false;' onclick=\"if(event.srcelement.tagname.touppercase()!='td')return;if(event.srcelement.innertext!='@')scanbomb.onclick(event.srcelement.id.split('_'),event.srcelement)\" style='cursor:default' oncontextmenu=\"if(event.srcelement.classname=='cl1'){event.srcelement.innertext=event.srcelement.innertext=='@'?'&nbsp;':'@';if(event.srcelement.innertext=='@')scanbomb.check(event.srcelement.id.split('_'),true);else scanbomb.check(event.srcelement.id.split('_'),false);}\">";
 for(i=0;i<this.height;i++)
  {
   this.board[i]=new array(this.width);
   htmlcode+="<tr>";
   for(j=0;j<this.width;j++)
    {
     htmlcode+="<td id='"+i+"_"+j+"' align='center' class='cl1'>&nbsp;</td>"
     this.board[i][j]=num;
    }
   htmlcode+="</tr>";
  }
 htmlcode+="</table>";
 document.all("boardcontainer").innerhtml=htmlcode;
 this.makemine();
 this.makethreadnum();
}

function makemine()//num为空白或者bomb的个数,当bomb小于等于格数的一半的时候num为bomb数,否则为空白数
{
 var condition=(this.minenum<=math.round(this.width*this.height/2));
 var num=condition?this.minenum:this.width*this.height-this.minenum;
 var str="new array(";
 for(var i=0;i<num-1;i++)
  str+="new array(2),";
 str+="new array(2))";
 eval("var position="+str);
 for(var i=0;i<num;i++)//这里产生不重复随机数的方法太差了!!!!!
  {
   position[i][0]=math.round(math.random()*(this.height-1));
   position[i][1]=math.round(math.random()*(this.width-1));
   for(var j=0;j<i;j++)//检查是否重复
    {//alert("i,j:"+i+","+j);
      if(position[i][0]==position[j][0])
     if(position[i][1]==position[j][1])
      {
       //alert("repeat!");
       position[i][0]=math.round(math.random()*(this.height-1));
       position[i][1]=math.round(math.random()*(this.width-1));
       j=0;
      }      
   }
  }//这里不重复随机数的产生方法太差了!!!!!
 if(condition)//true 表示产生的是mine的position,false表示产生的是空白的position
 {
  this.minep=position;
  for(var i=0;i<num;i++)
  {
   this.board[parseint(position[i][0])][parseint(position[i][1])]=-1000;
  }
 }
 else
 {
  for(var k=0;k<num;k++)
   this.board[position[k][0]][position[k][1]]=0;
   
  this.minep=new array(this.minenum);
  var counter=0;
  for(var i=0;i<this.height;i++)
  {
   for(var j=0;j<this.width;j++)
    if(this.board[i][j]==-1000)
     {
      this.minep[counter]=new array(2);
      this.minep[counter][0]=i;
      this.minep[counter][1]=j;
      counter++;
     }
   
  }
 }
}

function makethreadnum()
{
 for(i=0;i<this.height;i++)
  for(j=0;j<this.width;j++)
   {
    if(this.board[i][j]==-1000)continue;
    for(k=0;k<this.minenum;k++)
     if(math.abs(i-this.minep[k][0])<=1&&math.abs(j-this.minep[k][1])<=1)
     this.board[i][j]--;
   }
}

function onclick(position,ob)
{
 var flag=ob.classname!='cl2';  
 if(this.board[position[0]][position[1]]==0)
  this.handlezeroarea(position);
    
 else if(this.board[position[0]][position[1]]==-1000)
  {
   ob.style.bordercolor='red';
   ob.style.backgroundcolor='red';
   for(i=0;i<this.minenum;i++)
   {

本文关键:游戏
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top