搏击

javascript 扫雷游戏示例

2019-09-13 19:19:40来源:励志吧0次阅读

<HTML>

<HEAD>

<TITLE>Javascript 地雷</TITLE>

<style>

input.no {

background-color:eeeeee;

border:none;

width:20;

height:20;

color:blue;

}

input.ye {

background-color:eeeeee;

border:none;

width:20;

height:20;

color:red;

}

input {

width:20;

height:20;

color:red;

}

input.mode0 {

width:50;

height:30;

border-style:inset

}

input.mode1 {

width:50;

height:30;

COLOR:GREEN;

}

</style>

</HEAD>

<BODY BGCOLOR="#000000">

<div ID=dilei style="position:absolute;left:0;top:5">

<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>

<SCRIPT LANGUAGE="JavaScript">

<!--

var x,y=0;

while(document.write("<tr>"),y++<20)

for(x=0;x++<20;document.write("<td ><font size=-5>

<input ID="+x+"_"+y+" type=button>"))

;

//-->

</SCRIPT>

</TABLE>

</div>

<div ID=ToolBar style="position:absolute;top:5;left:401;

/*height:300;*/background-color:green;width:200">

<input id=Mode type=button value="挖雷" class=mode1

onclick="javascript: modeTab();">

<nobr>

<span id=modenow style="color:blue">现在可以揭开方块</span>

</div>

</BODY>

<SCRIPT LANGUAGE="JavaScript">

<!--//34

var Row,Col,i=0;

var RowSize=20,ColSize=20;

var mineNum=45; //地雷数

var mode=1;

var mineX=new Array(mineNum), mineY=new Array(mineNum);

var Mine= new Array(RowSize),Decouv= new Array(RowSize);

for(i=0;i<20;i++){

Mine[i]=new Array(ColSize);

Decouv[i]= new Array(ColSize);

}

//初始化

for (Row=1;Row<=RowSize;Row++) {

for (Col=1;Col<=ColSize;Col++) {

Mine[Row-1][Col-1]=0;

Decouv[Row-1][Col-1]=0;

}

};

//布地雷 Math.random( )

i=0;

while (i<mineNum){

mineX[i]=Math.round(Math.random()*1000)%RowSize;

mineY[i]=Math.round(Math.random()*1000)%ColSize;

if(Mine[mineX[i]][mineY[i]]==9) continue;

Mine[mineX[i]][mineY[i]]=9;

Decouv[mineX[i]][mineY[i]]=9;

i++;

}

for(i=0;i<mineNum;i++){

for(j=1;j<=8;j++){

switch(j){

case 1:

divIndexX=mineX[i]-1;divIndexY=mineY[i]-1;

break;

case 2:

divIndexX=mineX[i]-1;divIndexY=mineY[i];

break;

case 3:

divIndexX=mineX[i]-1;divIndexY=mineY[i]+1;

break;

case 4:

divIndexX=mineX[i];divIndexY=mineY[i]-1;

break;

case 5:

divIndexX=mineX[i];divIndexY=mineY[i]+1;

break;

case 6:

divIndexX=mineX[i]+1;divIndexY=mineY[i]-1;

break;

case 7:

divIndexX=mineX[i]+1;divIndexY=mineY[i];

break;

case 8:

divIndexX=mineX[i]+1;divIndexY=mineY[i]+1;

}

if(divIndexX<0||divIndexY<0||divIndexX>=RowSize||divIndexY>=ColSize) continue;

Decouv[divIndexX][divIndexY]+=1;

Mine[divIndexX][divIndexY]=Decouv[divIndexX][divIndexY];

}

}

//模式切换

function modeTab(){

if(mode==1){

mode=0;

document.all("Mode").className="mode0";

document.all("Mode").value="探测";

document.all("modenow").innerText="现在可以标记雷区"+mode;

}else{

mode=1;

document.all("Mode").className="mode1";

document.all("Mode").value="挖雷";

document.all("modenow").innerText="现在可以揭开方块"+mode;

}

}

function TRY(){

var SRCElem=event.srcElement;

if(SRCElem.tagName!="INPUT"||SRCElem.className=="mode0"

SRCElem.className=="mode1") return;

if(SRCElem.className=="no"||SRCElem.className=="ye")return;

tryDown(SRCElem);

}

function tryDown(Elem){

var indexX,indexY;

var ss=Elem.id.split("_");

indexX=ss[0].valueOf()-1;

indexY=ss[1].valueOf()-1;

if(mode==0){

if(Elem.value==""){

Elem.value="!";

Mine[indexX][indexY]=Decouv[indexX][indexY];

Decouv[indexX][indexY]=18;

return;}

else{

Elem.value="";

Decouv[indexX][indexY]=Mine[indexX][indexY];

return;

}

}

if(Decouv[indexX][indexY]>8){

if(Decouv[indexX][indexY]>=18)

return;

Elem.value="*";

Elem.className="ye";

Decouv[indexX][indexY]=9

return;

}

Elem.className="no";

Elem.value=""+Mine[indexX][indexY];

if(Decouv[indexX][indexY]>0){

Decouv[indexX][indexY]=9

return;

}

if(Decouv[indexX][indexY]==0)

{

Elem.value="";

tryGo(indexX,indexY);

}

return;

}

function TRY2(Elm){

Elm.value="!";

}

function judge4(x,y){

if(Decouv[x][y]!=-1&&Decouv[x][y]!=0){

return 0;}

var i=0,j=0,divIndexX,divIndexY;

for(i=1;i<=4;i++){

switch(i){//

case 1://up

divIndexX=x;divIndexY=y-1;j=1;

break;

case 2://left

divIndexX=x-1;divIndexY=y;j=2;

break;

case 3://down

divIndexX=x;divIndexY=y+1;j=3;

break;

case 4://right

divIndexX=x+1;divIndexY=y;j=4;

}

if(divIndexX>=0&&divIndexY>=0&&divIndexX<RowSize&&divIndexY

<ColSize&&Decouv[divIndexX][divIndexY]>=0&&Decouv[divIndexX][divIndexY]<=8){

return j;

}

}

return 0;

}

function tryGo(x,y){

var stackX=new Array(),stackY=new Array();

var i=0;

var test=50;

var divIndexX=x,divIndexY=y;

stackX[i]=divIndexX;stackY[i]=divIndexY;

while(test){

var Elem;

eval("Elem=document.all(\""+(divIndexX+1)+"_"+(divIndexY+1)+"\")");

Elem.className="no";

if(Decouv[divIndexX][divIndexY]<=0)

Decouv[divIndexX][divIndexY]= -1;

else{

Elem.value=""+Mine[divIndexX][divIndexY];

Decouv[divIndexX][divIndexY]= 9;

}

switch(judge4(divIndexX,divIndexY)){

case 1://up

divIndexY--;

break;

case 2://left

divIndexX--;

break;

case 3://down

divIndexY++;

break;

case 4://right

divIndexX++;

break;

case 0:

i=i-1;

if(i<0){

return;

}

divIndexX=stackX[i];divIndexY=stackY[i];

continue;

}

i=i+1;stackX[i]=divIndexX;stackY[i]=divIndexY;

}

}

document.onclick =TRY;

//-->

</SCRIPT>

</HTML>

查看本文来源

孩子咳嗽吃什么药效果好
小孩咳嗽厉害怎么办
糖尿病胃轻瘫腹胀怎么治
血栓的前期症状
分享到: