代码是没有除错的,我只用来参考,先放这儿:
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();
|
|