扫雷[1]

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

本文简介:选择自 hillhero789 的 blog

闲时,写了个扫雷,没有什么用,不过放上来爽一下而已,呵呵……

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<style>
.cl1{width:20;height:20;border-width:3px;border-style:solid;border-left-color:#ffffff;border-top-color:#ffffff;border-right-color:#808080;border-bottom-color:#808080;background-color:c0c0c0;}
.cl2{width:20;height:20;border-width:3px;border-style:solid;border-color:#c0c0c0;background-color:#c0c0c0;}
.inputclass{width:40px;height:20px;border-style:solid;border-width:1px;}
</style>
</head>
<body style="font-size:12px;" oncontextmenu="return false;" bgcolor="#000000">
<div align="center"><font color="#ffff00"><strong>supper landmine scanning</strong></font>
</div>
<div align="center" style="color:#ffffff"><br>
  你已经标记的雷数:<span id="mark" style="color:#ff0000">0</span>&nbsp;&nbsp;流逝的时间:<span id='time' style="color:#ff0000">0</span>秒</div>
<div id="boardcontainer"></div>
<script src="queue.js"></script>
<script>
function board(mnum,w,h)
{
 this.minenum=mnum;
 this.height=h;
 this.width=w;
 this.board=new array(h);
 this.tempboard=new array(h);
 this.minep=null;
 //direction 有左上到右下,顺时针。
 this.direction=new array(new array(-1,-1),new array(0,-1),new array(1,-1),new array(1,0),new array(1,1),new array(0,1),new array(-1,1),new array(-1,0));
 this.makeemptyboard=makeemptyboard;
 this.makemine=makemine;
 this.makethreadnum=makethreadnum;
 this.onclick=onclick;
 this.handlezeroarea=handlezeroarea;
 this.check=check;
 this.marknum=0;
 this.blankleft=w*h;
 this.timer=0;
 var n=(mnum<=w*h/2)?0:-1000;
 this.makeemptyboard(n);
 for(var t=0;t<h;t++)
  this.tempboard[t]=new array(this.width);
}
function check(position,increase)
{
 if(increase)
  {
   this.marknum++;
   document.all("mark").innertext=this.marknum;
   this.tempboard[position[0]][position[1]]=this.board[position[0]][position[1]];
   this.board[position[0]][position[1]]=10;
  }
 else
  {
   this.marknum--;
   document.all("mark").innertext=this.marknum;
   this.board[position[0]][position[1]]=this.tempboard[position[0]][position[1]];
  }
}
function handlezeroarea(position)
{
  this.blankleft--;
  this.board[position[0]][position[1]]=9;//将已经访问的o数据改成9即标记已经访问
  document.all(position[0]+"_"+position[1]).classname='cl2';
  var newposition=new array(2);
  var queue=new queue();
  queue.enter(position);
  
  while(!queue.isempty())
  {
   p=queue.retrieve();
   queue.leave();
   for(var k=0;k<8;k++)//这个"var"一定要用!!!!!!!!!!!!!!!!!!!!!!!!!!
     {
     
   newposition[0]=parseint(p[0])+parseint(this.direction[k][1]);
   newposition[1]=parseint(p[1])+parseint(this.direction[k][0]);
   if(newposition[0]>=0&&newposition[0]<this.height&&newposition[1]>=0&&newposition[1]<this.width)//没有溢出则执行下边的处理
    {
    if(this.board[newposition[0]][newposition[1]]==-1000||this.board[newposition[0]][newposition[1]]>0)//为地雷,或者已经显示的就不做处理
     continue;
    else if(this.board[newposition[0]][newposition[1]]<0)//非地雷,非已经显示,表示要显示
     {
      this.board[newposition[0]][newposition[1]]=-this.board[newposition[0]][newposition[1]];
      document.all(newposition[0]+"_"+newposition[1]).innertext=this.board[newposition[0]][newposition[1]];
      document.all(newposition[0]+"_"+newposition[1]).classname='cl2';
      this.blankleft--;
     }
    else if(this.board[newposition[0]][newposition[1]]==0)
        {
      this.blankleft--;
      this.board[newposition[0]][newposition[1]]=9;//将已经访问的o数据改成9即标记已经访问
      document.all(newposition[0]+"_"+newposition[1]).classname='cl2';
      queue.enter(newposition);
     }
    }
          }

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

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

go top