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();
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();
