站内搜索:     
站点首页破釜学院网页制作Flash游戏制作 → 扫雷游戏代码
正在加载相关信息.....
Web 站内搜索
扫雷游戏代码
】【打印】【加入收藏】【关闭收藏到新浪ViVi】【收藏到365KEY】 浏览字号:
日期:2006-09-01 人气: 出处:闪吧个人空间 作者: crl
 代码是没有除错的,我只用来参考,先放这儿:
function buildMap(map) {
 W = map[0].length;
 H = map.length;
 for (var j = 0; j<H; ++j) {
  for (var i = 0; i<W; ++i) {
   this.attachMovie("tile", "t_"+j+"_"+i, ++d);
   var _mc = this["t_"+j+"_"+i];
   _mc._x = i*size+width[level];
   _mc._y = j*size+height[level];
   _mc.gotoAndStop(12);
   _mc.state = 0;
   _mc.number = 0;
   _mc.bomb = 0;
   _mc.count = 0;
   _mc.mark = 0;
   _mc.x = i;
   _mc.y = j;
  }
 }
}
function placeBombs() {
 var counter = 0;
 while (counter<bombs[level]) {
  var ranW = random(W);
  var ranH = random(H);
  var _mc = this["t_"+ranH+"_"+ranW];
  var b = _mc.bomb;
  if (!b) {
   _mc.bomb = 1;
   myMap[ranH][ranW] = 9;
   ++counter;
  }
 }
}
function placeNumbers(map) {
 for (var j = 0; j<H; ++j) {
  for (var i = 0; i<W; ++i) {
   var _mc = this["t_"+j+"_"+i];
   if (!_mc.bomb) {
    if (map[j][i+1] == 9) {
     ++_mc.count;
    }
    if (map[j][i-1] == 9) {
     ++_mc.count;
    }
    if (map[j+1][i] == 9) {
     ++_mc.count;
    }
    if (map[j-1][i] == 9) {
     ++_mc.count;
    }
    if (map[j-1][i-1] == 9) {
     ++_mc.count;
    }
    if (map[j-1][i+1] == 9) {
     ++_mc.count;
    }
    if (map[j+1][i+1] == 9) {
     ++_mc.count;
    }
    if (map[j+1][i-1] == 9) {
     ++_mc.count;
    }
    if (_mc.count !== 1) {
     continue;
    }
    _mc.number = 1;
    continue;
    _mc.number = 2;
    continue;
    _mc.number = 3;
    continue;
    _mc.number = 4;
    continue;
    _mc.number = 5;
    continue;
    _mc.number = 6;
    continue;
    _mc.number = 7;
    continue;
    _mc.number = 8;
    continue;
   }
  }
 }
}
function setLabel(m) {
 markedLabel = "Marked: "+m+" / "+bombs[level];
 switch (level) {
 case 1 :
  levelLabel = "Beginner";
  break;
 case 2 :
  levelLabel = "Intermediate";
  break;
 case 3 :
  levelLabel = "Expert";
  break;
 }
}
function findTile(x, y) {
 var Y = y;
 var X = x;
 var tu = this["t_"+(Y-1)+"_"+X];
 var td = this["t_"+(Y+1)+"_"+X];
 var tl = this["t_"+Y+"_"+(X-1)];
 var tr = this["t_"+Y+"_"+(X+1)];
 var tur = this["t_"+(Y-1)+"_"+(X+1)];
 var tdr = this["t_"+(Y+1)+"_"+(X+1)];
 var tul = this["t_"+(Y-1)+"_"+(X-1)];
 var tdl = this["t_"+(Y+1)+"_"+(X-1)];
 if (tu.bomb == 0 && tu.mark == 0 || td.bomb == 0 && td.mark == 0 || tl.bomb == 0 && tl.mark == 0 || tr.bomb == 0 && tr.mark == 0 || tur.bomb == 0 && tur.mark == 0 || tdr.bomb == 0 && tdr.mark == 0 || tul.bomb == 0 && tul.mark || tdl.bomb == 0 && tdl.mark == 0) {
  this["t_"+Y+"_"+X].state = 1;
  this["t_"+Y+"_"+X].gotoAndStop(13);
  if (tu.number == 0 && tu.state == 0 && tu.bomb == 0 && tu.mark == 0) {
   findTile(X, Y-1);
  } else if (tu.bomb == 0 && tu.mark == 0) {
   tu.gotoAndStop(tu.number);
   tu.state = 1;
  }
  if (td.number == 0 && td.state == 0 && td.bomb == 0 && td.mark == 0) {
   findTile(X, Y+1);
  } else if (td.bomb == 0 && td.mark == 0) {
   td.gotoAndStop(td.number);
   td.state = 1;
  }
  if (tl.number == 0 && tl.state == 0 && tl.bomb == 0 && tl.mark == 0) {
   findTile(X-1, Y);
  } else if (tl.bomb == 0 && tl.mark == 0) {
   tl.gotoAndStop(tl.number);
   tl.state = 1;
  }
  if (tr.number == 0 && tr.state == 0 && tr.bomb == 0 && tr.mark == 0) {
   findTile(X+1, Y);
  } else if (tr.bomb == 0 && tr.mark == 0) {
   tr.gotoAndStop(tr.number);
   tr.state = 1;
  }
  if (tur.number == 0 && tur.state == 0 && tur.bomb == 0 && tur.mark == 0) {
   findTile(X+1, Y-1);
  } else if (tur.bomb == 0 && tur.mark == 0) {
   tur.gotoAndStop(tur.number);
   tur.state = 1;
  }
  if (tdr.number == 0 && tdr.state == 0 && tdr.bomb == 0 && tdr.mark == 0) {
   findTile(X+1, Y+1);
  } else if (tdr.bomb == 0 && tdr.mark == 0) {
   tdr.gotoAndStop(tdr.number);
   tdr.state = 1;
  }
  if (tul.number == 0 && tul.state == 0 && tul.bomb == 0 && tul.mark == 0) {
   findTile(X-1, Y-1);
  } else if (tul.bomb == 0 && tul.mark == 0) {
   tul.gotoAndStop(tul.number);
   tul.state = 1;
  }
  if (tdl.number == 0 && tdl.state == 0 && tdl.bomb == 0 && tdl.mark == 0) {
   findTile(X-1, Y+1);
   return;
  }
  if (tdl.bomb == 0 && tdl.mark == 0) {
   tdl.gotoAndStop(tdl.number);
   tdl.state = 1;
  }
 }
}
function gameOver(x, y) {
 var _this = this;
 for (var j = 0; j<H; ++j) {
  for (var i = 0; i<W; ++i) {
   if (_this["t_"+j+"_"+i].bomb) {
    _this["t_"+j+"_"+i].gotoAndStop(9);
   }
  }
 }
 _this["t_"+y+"_"+x].gotoAndStop(10);
 playGame = 0;
 snd2.start(0, 1);
 statusLabel = "DEAD!";
}
function checkWin() {
 var count = 0;
 for (var j = 0; j<H; ++j) {
  for (var i = 0; i<W; ++i) {
   var mc = this["t_"+j+"_"+i];
   if (mc.state == 1) {
    ++count;
   }
  }
 }
 if (count+bombs[level] == H*W) {
  statusLabel = "YOU WIN!";
  snd1.start(0, 1);
  playGame = 0;
 }
}
myMap1 = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]];
myMap2 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
myMap3 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
width = [0, 49, 34, 18];
height = [0, 48, 34, 16];
bombs = [0, 10, 15, 20];
size = 16;
_root.onKeyDown = function() {
 if (playGame) {
  if (Key.isDown(32)) {
   var col = int((_xmouse-width[level])/size);
   var row = int((_ymouse-height[level])/size);
   var _mc = this["t_"+row+"_"+col];
   if (!_mc.mark && !_mc.state) {
    _mc.mark = 1;
    _mc.gotoAndStop(11);
    ++marked;
    setLabel(marked);
   }
  }
 }
};
d = 0;
marked = 0;
playGame = 1;
myMap = _root["myMap"+level];
buildMap(myMap);
placeBombs();
placeNumbers(myMap);
setLabel(marked);
statusLabel = "";
Key.addListener(_root);
stop();

>>>> 进入论坛交流 <<<<