闲时,写了个扫雷,没有什么用,不过放上来爽一下而已,呵呵……
<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> 流逝的时间:<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);
}
}
}