WEB开发网
开发学院网页设计JavaScript javascript扫雷游戏,版本二 阅读

javascript扫雷游戏,版本二

 2007-11-27 18:02:57 来源:WEB开发网   
核心提示:重新写了一遍这次不使用Button元素只用了一个table而且加入了输赢判断,双键的试探功能,javascript扫雷游戏,版本二,优化了打开空白区域的算法,还有关卡的设定 :)总之,现在已经比较完善了<html><head><meta http-equiv=Content-Typ

重新写了一遍
这次不使用Button元素
只用了一个table
而且加入了输赢判断,双键的试探功能,优化了打开空白区域的算法,还有关卡的设定 :)
总之,现在已经比较完善了

<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=gb2312>
<meta name=Author content=Gray·Chan(graycarl)>
<meta name=Version content=2.0>
<meta name=Date content=2003.4.8>
<meta name=Date content=2003.4.9>
<meta name=Corpright content=http://gray.ipaopao.com>
<title>扫雷游戏</title>
<style>
<!--
td      {overflow:hidden;
  font-family: Arial Black; font-size: 11px;
  text-align: center;
  border-left: 2 solid #FFFFFF;
  border-right: 2 solid #808080;
  border-top: 2 solid #FFFFFF;
  border-bottom: 2 solid #808080;
  background-color: #C0C0C0;
  cursor:default}
td.down   {border-left: 3 solid #C0C0C0;
  border-right: 1 solid #808080;
  border-top: 3 solid #C0C0C0;
  border-bottom: 1 solid #808080;}
td.marked  {font-family: Wingdings; color: #ff0000}
-->
</style>
</head>
<body>
<div id=DWC0 style=BACKGROUND-COLOR: silver;font-size:12px;color:red;HEIGHT: 26px; LEFT: 201px; POSITION: absolute; TOP: 121px; WIDTH: 173px>

请稍候,正在装载……</div>
<div id=DWC1 style=HEIGHT: 150px; LEFT: -5px; POSITION: absolute; TOP: -16px; VISIBILITY: hidden; WIDTH: 157px><font face=Webdings color=#ffe0c1

style=FONT-SIZE: 150px>*</font></div>
<div id=DWC2 style=COLOR: red; FONT-SIZE: 12px; HEIGHT: 18px; LEFT: 31px; POSITION: absolute; TOP: 14px; VISIBILITY: hidden; WIDTH: 103px>地雷

数:<span ID=MINENUMSCREEN style=FONT-FAMILY: Arial Black; FONT-SIZE: 14px>0</span></div>
<div id=DWC3 style=HEIGHT: 299px; LEFT: 1px; POSITION: absolute; TOP: 31px; VISIBILITY: hidden; WIDTH: 419px><!--STATUS = 0 按钮

状态--><!--STATUS = 1 固定按钮状态--><!--STATUS = 2 点开状态--><!--MINE = 0 无雷

--><!--MINE = 1 有雷-->
<SCRIPT language=javascript  version=1.1>
 var ROWS=18;
 var COLS=22;
 var MINE=0;
 var STATUS=0;
 var MINEPRAM=20; 
 var Elems=new Array(ROWS);
 var Stack=new Array(ROWS*COLS);
 var StackPoint=-1;
 var MINECOUNT=0;
 
 var LocationHash=document.location.hash;
 var idx=LocationHash.indexOf(#);
 if(idx>=0) LocationHash=LocationHash.substr(1);
 if(!isNaN(LocationHash)&&LocationHash!=)MINEPRAM=parseInt(LocationHash);
 var NextLevelLocation=document.location.href;
 idx=NextLevelLocation.indexOf(#);
 if(idx>=0) NextLevelLocation=NextLevelLocation.substr(0,idx);
 NextLevelLocation+=#+Math.round(MINEPRAM*0.8);
 
 document.writeln(<table border=\1\ cellpadding=\0\ cellspacing=\0\ bordercolor=\#808080\  width=+20*COLS+ height=+20*ROWS+>)

 for(var i=1;i<=ROWS;i++){
 Elems[i-1]=new Array(COLS);
 document.writeln(  <tr>);
 for(var j=1;j<=COLS;j++){
 if(Math.floor(Math.random()*MINEPRAM)==0){
  MINE=1;
  STATUS=0;
  MINECOUNT++;
 }
 else{
  MINE=0;
  STATUS=0;
 }
 document.writeln(   <td id=\btn+j+_+i+\ I=\+i+\ J=\+j+\ STATUS=\+STATUS+\ MINE=\+MINE+\ MINENUM=\0\  Class=\\

width=15 height=15> </td>);
 }
 document.writeln(  </tr>);
}
document.writeln(</table>);
document.all.DWC0.innerText=请稍候,正在准备游戏信息……;
</SCRIPT>
</div>
<script language=javascript version=1.1>
var downElem=null;
var YOrder,XOrder;
var clickStyle=0;
function GetSTATUSNum(Elem,XOrder,YOrder){
 var STATUS=0;
 if(Elem.getAttribute(STATUS)==1) return 99;
 
 var curElem;
 try{
 curElem=Elems[XOrder-1][YOrder-1];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder-1][YOrder];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder-1][YOrder+1];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder][YOrder-1];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder][YOrder+1];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder+1][YOrder-1];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder+1][YOrder];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder+1][YOrder+1];
 if(curElem.getAttribute(STATUS)==1) STATUS++;
 }catch(e)
 {
 }
 return STATUS; 
}


function GetMINENum(Elem,XOrder,YOrder){
 var MINE=0;
 if(Elem.getAttribute(MINE)==1) return 99;
 
 var curElem;
 try{
 curElem=Elems[XOrder-1][YOrder-1];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder-1][YOrder];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder-1][YOrder+1];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder][YOrder-1];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder][YOrder+1];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder+1][YOrder-1];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder+1][YOrder];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 try{
 curElem=Elems[XOrder+1][YOrder+1];
 if(curElem.getAttribute(MINE)==1) MINE++;
 }catch(e)
 {
 }
 return MINE; 
}
function GetMINENumEx(Elem){
 return parseInt(Elem.getAttribute(MINENUM));
}

function markBtn(Elem){
 if(Elem==null) return;
 if(Elem.getAttribute(STATUS)==2) return;
 if(Elem.getAttribute(STATUS)==1) {
 Elem.setAttribute(STATUS,0);
 document.all.MINENUMSCREEN.innerText = (++MINECOUNT);
 Elem.innerText= ;
 Elem.className=;
 return;
 }
 if(Elem.getAttribute(STATUS)==0) {
 Elem.setAttribute(STATUS,1);
 document.all.MINENUMSCREEN.innerText = (--MINECOUNT);
 Elem.innerText=P;
 Elem.className=marked;
 return;
 }
}

function autoOpenBtns(Elem){
 var curElem;
 var XOrder,YOrder;
 if(Elem.getAttribute(STATUS)!=2) return;
 YOrder=parseInt(Elem.getAttribute(I))-1;
 XOrder=parseInt(Elem.getAttribute(J))-1;
 if(GetSTATUSNum(Elem,YOrder,XOrder)!=GetMINENumEx(Elem)) return;
 try{
 curElem=Elems[YOrder-1][XOrder-1];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder-1][XOrder];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder-1][XOrder+1];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder][XOrder-1];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder][XOrder+1];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder+1][XOrder-1];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder+1][XOrder];
 openBtns(curElem);
 }catch(e)
 {
 }
 try{
 curElem=Elems[YOrder+1][XOrder+1];
 openBtns(curElem);
 }catch(e)
 {
 }
}

function push(Elem){
if(Elem==null) return;
Stack[++StackPoint]=Elem;
return;
}
function pop(){
try{
return Stack[StackPoint--];
}
catch(e){
return null;
}
}

function openBtns(Elem){
 var curElem=Elem;
 while(curElem!=null){
 if(curElem.getAttribute(STATUS)==0) openBtnsEx(curElem);
 curElem=pop();
 }
 
}

function openBtnsEx(Elem){
 var XOrder,YOrder;
 YOrder=parseInt(Elem.getAttribute(I))-1;
 XOrder=parseInt(Elem.getAttribute(J))-1;
 var MineNum=GetMINENumEx(Elem);
 if(MineNum==99) return FailAndOpenAllMine();
 Elem.className=down;
 Elem.setAttribute(STATUS,2);
 if(MineNum>0){
 Elem.innerText=MineNum;
 Elem.style.color=0000ff;
 if(MineNum>1){
  Elem.style.color=00ff00;
  if(MineNum>2){
  Elem.style.color=ff0000;
  if(MineNum>3){
   Elem.style.color=000099;
   if(MineNum>4){
   Elem.style.color=009900;
   if(MineNum>5){
    Elem.style.color=990000;
    if(MineNum>6){
    Elem.style.color=000033;
    if(MineNum>7){
     Elem.style.color=003300;
    }
    }
   }
   }
  }
  }
 }
 }
 else{
 var curElem;
 try{
  curElem=Elems[YOrder-1][XOrder-1];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder-1][XOrder];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder-1][XOrder+1];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder][XOrder-1];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder][XOrder+1];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder+1][XOrder-1];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder+1][XOrder];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 try{
  curElem=Elems[YOrder+1][XOrder+1];
  if(curElem.getAttribute(STATUS)==0)push(curElem);
 }catch(e)
 {
 }
 }
}

function FailAndOpenAllMine(){
 for(var i=0;i<ROWS;i++){
 for(var j=0;j<COLS;j++){
  var curElem=
  Elems[i][j];if(curElem.getAttribute(STATUS)==1&&curElem.getAttribute(MINE)==0){
  curElem.innerHTML=<font face=\Webdings\ color=red>r</font>;
  curElem.className=
  
  down;}if(curElem.getAttribute(STATUS)==0&&curElem.getAttribute(MINE)==1){
  curElem.innerHTML=<font face=\Wingdings\>M</font>;
  curElem.className=down;
  }

 }
 }
 alert(你失败了! 按[确定]重新开始。);
 setTimeout(document.location.reload(),100);
 return true;
}

function elemClick(Elem){
 if(clickStyle==1)  openBtns(Elem);
 if(clickStyle==2) markBtn(Elem);
 if(clickStyle==3) autoOpenBtns(Elem);
 CheckIfVictory();
}

function setElemDown(Elem){
 var curElem=null;
 YOrder=parseInt(Elem.getAttribute(I));
 XOrder=parseInt(Elem.getAttribute(J));
 if(clickStyle==1){ 
 if(Elem.getAttribute(STATUS)==0) Elem.className=down;
 }
 
 if(clickStyle==2){ 
 
 }

 if(clickStyle==3){ 
 if(Elem.getAttribute(STATUS)==0) Elem.className=down;

 curElem=
 eval(document.all.btn+(XOrder-1)+_+(YOrder-1));if(curElem!=null&&curElem.getAttribute(STATUS)==0)

curElem.className=down;
 curElem=
 eval(document.all.btn+(XOrder-1)+_+(YOrder));if(curElem!=null&&curElem.getAttribute(STATUS)==0) curElem.className=down;
 curElem=
 eval(document.all.btn+(XOrder-1)+_+(YOrder+1));if(curElem!=null&&curElem.getAttribute(STATUS)==0)

curElem.className=down;

Tags:avascript 扫雷 游戏

编辑录入:coldstar [复制链接] [打 印]
赞助商链接