j**ascript 扫雷游戏示例

时间:2016.04.29 发布人:jinghanlianga

j**ascript 扫雷游戏示例

已解决问题

谷歌jinghanlianga用户在2016.04.29提交了关于“陈小春j**ascript 扫雷游戏示例”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-03-01T02:20:22。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,你无异于雪中送炭,让我感激涕零 !

希望以下的回答,能够帮助你。

第1个回答

用户名:jkm280  

<h**TML>
<h**苗防移哪欢EAD>
<TITLE>J**ascript**</TITLE>

<style>
***.no问答{
background-color:eeeeee;
border:none;
width:20;
height:20;
color:blue;
}
***.ye{
background-color:eeeeee;
border:none;
width:20;
height:20;
c家热历算穿我曾据玉服olor:red;
}
inpu下久支t{
width:20;
height:20;
color:red;
}
input.mode0{
width:50;
heig群短倍便般队第领下青衣ht:30;
border-style:绍错凯inset
}
input.mode1{
width:50;
height:30;
C陆质是切受球单义船九OLOR:GREEN;
}
</style>
</h**EAD>
<BODYBGCOLOR="#000000">
<divID=dileistyle="position:absolute;left:0;top:5">
<TA五数皇还林吗市紧BLEBORDER=0CEL针谈下各以LSPACING=0CELLPADDING=0>
<SCRIPTLANGUAGE="J**aScript">
<!--
varx,y=0;
while(document.write("<tr>"),y++<20)
for(x=0;x++<20点告用善买灯统以歌陈;document.write("<td><fontsize=-5>
<inputID="+x+"_"+y+"t握划置静频余协走垂ype=button>"))
;

//-->
</SC钱位通RIPT>
</TABLE>
</div>
<divID=农预说门赶手统指ToolBarstyle="position:absolute;top:5;left:401;
/*height:300;*/backgroun几件重流既洋d-color:green;width:200">
<inputid=Modetype=buttonvalue="挖雷"cla载挥顺ss=mode1
onclick="j**ascript:modeTab();">
<nobr>
<spanid=modenowstyle="color:blue">现在可以揭开方块</span>
</div>
</BODY>
<SCRIPTLANGUAGE="J**aScript">
<!--//34
varRow,Col,i=0;
varRowSize=20,ColSize=20;
varmineNum=45;//**数
varmode=1;


varmineX=newArray(mineNum),mineY=newArray(mineNum);
varMine=newArray(RowSize),Decouv=newArray(RowSize);
for(i=0;i<20;i++){
Mine[i]=newArray(ColSize谓争金通南兴);
Decouv[i]=newArray(Col零较料罪计娘妒宗皮审Size);
}


//初始化

for(Ro厂兵文显及操w=1;Row<=RowSize;Row++){
for(Col=1;Col<=ColSize;Col++){
Mine[R洲张层传比要争肥阿张ow-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)conti**e;
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){
case1:
divIndexX=mineX[i]-1;divIndexY=mineY[i]-1;
bre**;
case2:
divIndexX=mineX[i]-1;divIndexY=mineY[i];
bre**;
case3:
divIndexX=mineX[i]-1;divIndexY=mineY[i]+1;
bre**;
case4:
divIndexX=mineX[i];divIndexY=mineY[i]-1;
bre**;
case5:
divIndexX=mineX[i];divIndexY=mineY[i]+1;
bre**;
case6:
divIndexX=mineX[i]+1;divIndexY=mineY[i]-1;
bre**;
case7:
divIndexX=mineX[i]+1;divIndexY=mineY[i];
bre**;
case8:
divIndexX=mineX[i]+1;divIndexY=mineY[i]+1;
}
if(divIndexX<0||divIndexY<0||divIndexX>=RowSize||divIndexY>=ColSize)conti**e;
Decouv[divIndexX][divIndexY]+=1;
Mine[divIndexX][divIndexY]=Decouv[divIndexX][divIndexY];
}
}
//模式切换

functionmodeTab(){
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;
}
}

functionTRY(){
varSRCElem=event.srcElement;
if(SRCElem.tagName!="INPUT"||SRCElem.className=="mode0"||
SRCElem.className=="mode1")return;
if(SRCElem.className=="no"||SRCElem.className=="ye")return;
tryDown(SRCElem);
}
functiontryDown(Elem){
varindexX,indexY;
varss=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;
}
functionTRY2(Elm){
Elm.value="!";
}
functionjudge4(x,y){
if(Decouv[x][y]!=-1&&Decouv[x][y]!=0){
return0;}
vari=0,j=0,divIndexX,divIndexY;
for(i=1;i<=4;i++){
switch(i){//
case1://up
divIndexX=x;divIndexY=y-1;j=1;
bre**;
case2://left
divIndexX=x-1;divIndexY=y;j=2;
bre**;
case3://down
divIndexX=x;divIndexY=y+1;j=3;
bre**;
case4://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){
returnj;
}
}
return0;
}
functiontryGo(x,y){
varstackX=newArray(),stackY=newArray();
vari=0;
vartest=50;
vardivIndexX=x,divIndexY=y;
stackX[i]=divIndexX;stackY[i]=divIndexY;
while(test){
varElem;
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)){
case1://up
divIndexY--;
bre**;
case2://left
divIndexX--;
bre**;
case3://down
divIndexY++;
bre**;
case4://right
divIndexX++;
bre**;
case0:
i=i-1;
if(i<0){
return;
}
divIndexX=stackX[i];divIndexY=stackY[i];
conti**e;
}
i=i+1;stackX[i]=divIndexX;stackY[i]=divIndexY;
}
}
document.onclick=TRY;
//-->
</SCRIPT>
</h**TML>