javascript扫雷游戏,版本二
2007-11-27 18:02:57 来源:WEB开发网重新写了一遍
这次不使用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;
- ››游戏定位成牵引Android发展的火车头
- ››游戏场景烘焙贴图制作
- ››游戏植物大战僵尸 iPhone 版9天销售额超100万美元...
- ››游戏开发包 iPhone cocos2d 初体验
- ››游戏三维怪物施法特效教程
- ››游戏人生Silverlight(2) - 趣味钢琴[Silverlight ...
- ››游戏人生Silverlight(3) - 打苍蝇[Silverlight 2....
- ››游戏人生Silverlight(4) - 连连看[Silverlight 2....
- ››游戏人生Silverlight(5) - 星际竞技场[Silverligh...
- ››游戏《封神榜》人物纣王3DMAX制作全过程
- ››游戏加速器中的领头羊-网际速递
- ››游戏引擎Valve Source奔向Linux
赞助商链接