Frame 1
stop();
Stage.showMenu = false;
startLevel = 1;
this.onEnterFrame = function () {
var _local1 = this;
sofar = _local1.getBytesLoaded();
total = _local1.getBytesTotal();
if (sofar == total) {
delete _local1.onEnterFrame;
nextFrame();
}
};
Frame 2
String.prototype.addCommas = function () {
var _local3 = this.length;
var _local2 = "";
var _local1 = 0;
while (_local1 <= _local3) {
_local2 = this.charAt(_local3 - _local1) + _local2;
if ((((_local1 % 3) == 0) && (_local1 > 0)) && (_local1 < _local3)) {
_local2 = "," + _local2;
}
_local1++;
}
return(_local2);
};
game_so = SharedObject.getLocal("neaveTetris");
score = 0;
level = startLevel;
play_btn.onRelease = function () {
play();
};
highScores_btn.onRelease = function () {
gotoAndStop (25);
};
neave_btn.onRelease = function () {
getURL ("http://www.neave.com/games/", "_blank");
};
Key.removeListener(this);
Frame 3
stop();
checkButtons = function () {
if (startLevel < 2) {
down_btn._alpha = 50;
down_btn.enabled = false;
} else if (startLevel > 9) {
up_btn._alpha = 50;
up_btn.enabled = false;
} else {
up_btn._alpha = (down_btn._alpha = 100);
up_btn.enabled = (down_btn.enabled = true);
}
};
checkButtons();
down_btn.onPress = function () {
startLevel--;
checkButtons();
};
up_btn.onPress = function () {
startLevel++;
checkButtons();
};
ok_btn.onPress = function () {
play();
};
Frame 4
startFall = function () {
timeout = setInterval(down, speed);
};
stopFall = function () {
clearInterval(timeout);
};
drawBlock = function (num, blockPos) {
b_mc[blockPos].gotoAndStop(num + 1);
};
drawNextBlock = function (num, blockPos) {
next_mc[blockPos].gotoAndStop(num + 1);
};
drawThisShape = function () {
if (moved) {
var _local1 = 0;
while (_local1 < 4) {
drawBlock(0, block_array[_local1]);
_local1++;
}
} else {
moved = true;
}
var _local1 = 0;
while (_local1 < 4) {
blockPos = shape_array[((thisShape * 16) + (rotation * 4)) + _local1];
block_array[_local1] = ((((blockPos >> 2) * 6) + blockPos) + xPos) + yPos;
drawBlock(thisShape + 1, block_array[_local1]);
_local1++;
}
};
drawNextShape = function () {
nextShape = int(Math.random() * 7);
var _local1 = 0;
while (_local1 < 11) {
drawNextBlock(0, _local1);
_local1++;
}
_local1 = 0;
while (_local1 < 4) {
drawNextBlock(nextShape + 1, shape_array[(nextShape * 16) + _local1]);
_local1++;
}
};
collision = function (x, y, rot) {
var _local2 = rot;
var _local3 = y;
var _local1 = 0;
while (_local1 < 4) {
blockPos = shape_array[((thisShape * 16) + (_local2 * 4)) + _local1];
if (flag_array[((((blockPos >> 2) * 6) + blockPos) + x) + _local3] != 0) {
return(true);
}
_local1++;
}
return(false);
};
left = function () {
var _local2 = 0;
while (_local2 < 4) {
var _local1 = block_array[_local2] - yPos;
while (_local1 >= 0) {
if (_local1 == 0) {
return;
}
_local1 = _local1 - 10;
}
_local2++;
}
if (!collision(xPos - 1, yPos, rotation)) {
xPos--;
drawThisShape();
}
};
right = function () {
var _local2 = 0;
while (_local2 < 4) {
var _local1 = block_array[_local2] - yPos;
while (_local1 >= 0) {
if (_local1 == 9) {
return;
}
_local1 = _local1 - 10;
}
_local2++;
}
if (!collision(xPos + 1, yPos, rotation)) {
xPos++;
drawThisShape();
}
};
rotate = function (clockwise) {
testRot = rotation;
if (clockwise) {
testRot++;
} else {
testRot--;
}
if (testRot == 4) {
testRot = 0;
} else if (testRot == -1) {
testRot = 3;
}
var _local2 = 0;
while (_local2 < 4) {
blockPos = shape_array[((thisShape * 16) + (testRot * 4)) + _local2];
var _local1 = (((blockPos >> 2) * 6) + blockPos) + xPos;
while (_local1 >= -1) {
if (((_local1 == -1) && (xPos < 0)) || ((_local1 == 0) && (xPos > 6))) {
return;
}
_local1 = _local1 - 10;
}
_local2++;
}
if ((((((blockPos >> 2) * 6) + blockPos) + xPos) + yPos) > 179) {
} else if (!collision(xPos, yPos, testRot)) {
rotation = testRot;
drawThisShape();
sound_mc.gotoAndPlay("popHi");
}
};
down = function () {
if (gameOver || (simult)) {
} else {
score++;
if (((block_array[3] - xPos) < 170) && (!collision(xPos, yPos + 10, rotation))) {
yPos = yPos + 10;
drawThisShape();
} else {
var _local1 = 0;
while (_local1 < 4) {
flag_array[block_array[_local1]] = thisShape + 1;
_local1++;
}
simult = 0;
var _local2 = 0;
while (_local2 < 180) {
var _local3 = 0;
while (_local3 < 10) {
if (flag_array[_local3 + _local2] == 0) {
break;
}
if (_local3 == 9) {
stopFall();
_local1 = 0;
while (_local1 < 10) {
b_mc[_local1 + _local2].bang_mc.y = _local2;
b_mc[_local1 + _local2].bang_mc.play();
_local1++;
}
simult++;
lines++;
}
_local3++;
}
_local2 = _local2 + 10;
}
if (simult) {
sound_mc.gotoAndPlay("win");
switch (simult) {
case 1 :
score = score + (level * 40);
break;
case 2 :
score = score + (level * 100);
break;
case 3 :
score = score + (level * 300);
break;
case 4 :
score = score + (level * 1200);
}
}
scoreTxt = String(score).addCommas();
if (collision(xPos, yPos, rotation) && (yPos == -10)) {
gameOver = true;
stopFall();
sound_mc.gotoAndPlay("end");
quitGame_mc.gotoAndStop(2);
quitGame_mc._visible = true;
} else {
level = int(lines / 10) + startLevel;
speed = ((level < 10) ? (600 - (level * 50)) : 100);
xPos = 3;
yPos = -10;
rotation = 0;
moved = false;
thisShape = nextShape;
if (!simult) {
drawNextShape();
drawThisShape();
sound_mc.gotoAndPlay("popLo");
}
}
}
updateAfterEvent();
}
};
this.onKeyDown = function () {
if (gameOver || (simult)) {
} else {
var _local1 = Key.getCode();
switch (_local1) {
case 80 :
pause_btn.onPress();
break;
case 81 :
quit_btn.onPress();
}
if (!paused) {
switch (_local1) {
case 37 :
left();
break;
case 39 :
right();
break;
case 40 :
this.onEnterFrame = down;
break;
case 38 :
case 88 :
rotate(true);
break;
case 90 :
rotate(false);
}
}
updateAfterEvent();
}
};
this.onKeyUp = function () {
delete this.onEnterFrame;
};
Key.removeListener(this);
Key.addListener(this);
gameOver = true;
paused = (moved = false);
score = (scoreTxt = (lines = (thisShape = (nextShape = (rotation = 0)))));
level = startLevel;
speed = ((level < 10) ? (600 - (level * 50)) : 100);
xPos = 3;
yPos = -10;
shape_array = new Array(5, 6, 9, 10, 5, 6, 9, 10, 5, 6, 9, 10, 5, 6, 9, 10, 4, 5, 6, 9, 1, 4, 5, 9, 1, 4, 5, 6, 1, 5, 6, 9, 4, 5, 9, 10, 2, 5, 6, 9, 4, 5, 9, 10, 2, 5, 6, 9, 5, 6, 8, 9, 1, 5, 6, 10, 5, 6, 8, 9, 1, 5, 6, 10, 4, 5, 6, 8, 0, 1, 5, 9, 2, 4, 5, 6, 1, 5, 9, 10, 4, 5, 6, 10, 1, 5, 8, 9, 0, 4, 5, 6, 1, 2, 5, 9, 4, 5, 6, 7, 1, 5, 9, 13, 4, 5, 6, 7, 1, 5, 9, 13);
block_array = new Array(0, 0, 0, 0);
flag_array = new Array();
var i = 18;
while (i >= 0) {
var j = 0;
while (j < 10) {
var k = ((i * 10) + j);
b_mc.attachMovie("block", k, k, {_x:j * 20, _y:i * 20});
flag_array[k] = 0;
j++;
}
i--;
}
var i = 0;
while (i < 3) {
var j = 0;
while (j < 4) {
var k = ((i * 4) + j);
next_mc.attachMovie("block", k, k, {_x:j * 20, _y:i * 20});
j++;
}
i++;
}
Frame 24
stop();
pause_btn.onPress = function () {
if (gameOver || (quitGame_mc._visible)) {
return(undefined);
}
stopFall();
sound_mc.gotoAndPlay("popMed");
b_mc._visible = !((paused_mc._visible = (paused = !paused)));
if (!paused) {
startFall();
}
};
quit_btn.onPress = function () {
if (gameOver) {
return(undefined);
}
stopFall();
sound_mc.gotoAndPlay("popMed");
b_mc._visible = (paused_mc._visible = false);
quitGame_mc._visible = (paused = true);
};
drawNextShape();
thisShape = nextShape;
drawThisShape();
drawNextShape();
gameOver = false;
stopFall();
startFall();
Frame 25
stop();
showScores = function () {
var _local2 = 10;
while (_local2 > 0) {
var _local3 = scoreboard_lv["name" + (page + _local2)];
var s = scoreboard_lv["score" + (page + _local2)];
var _local1 = this[("line" + _local2) + "_mc"];
_local1.rank_txt.text = (page + _local2) + ".";
_local1.name_txt.text = (_local3.length ? (_local3.toLowerCase()) : "-");
_local1.score_txt.text = (s.length ? (s.addCommas()) : "-");
_local1.rank_txt.textColor = (_local1.name_txt.textColor = (_local1.score_txt.textColor = ((game_so.data.playerName.length && (_local3.toLowerCase() == game_so.data.playerName.toLowerCase())) ? 16777215 : 7833770)));
_local1._visible = true;
loading_mc._visible = false;
_local2--;
}
};
page = 0;
maxScore = 100;
scoreboard_lv = new LoadVars();
if ((score > 0) && (game_so.data.playerName.length > 0)) {
scoreboard_lv.score = score;
scoreboard_lv.name = game_so.data.playerName.toLowerCase();
}
scoreboard_lv.game = "tetris";
scoreboard_lv.sendAndLoad("http://www.bofunk.com/media/games/Tetris/games_score_sql.php", scoreboard_lv, "POST");
scoreboard_lv.onLoad = function (success) {
if (success) {
if (Boolean(scoreboard_lv.success)) {
next_btn._visible = true;
if (scoreboard_lv.maxScore.length > 0) {
maxScore = Number(scoreboard_lv.maxScore);
}
showScores();
} else {
loading_mc.errorMsg = scoreboard_lv.errorMsg.toLowerCase();
loading_mc.gotoAndStop(2);
}
} else {
loading_mc.errorMsg = "could not access scores.";
loading_mc.gotoAndStop(2);
}
};
score = 0;
next_btn._visible = (last_btn._visible = false);
last_btn.onPress = function () {
page = page - 10;
if (page < 0) {
page = 0;
}
if (page < 10) {
last_btn._visible = false;
}
next_btn._visible = true;
showScores();
};
next_btn.onPress = function () {
page = page + 10;
if (page > maxScore) {
page = maxScore;
}
if (page > (maxScore - 20)) {
next_btn._visible = false;
}
last_btn._visible = true;
showScores();
};
newGame_btn.onRelease = function () {
gotoAndStop (2);
};
Symbol 2 MovieClip Frame 1
stop();
Symbol 2 MovieClip Frame 7
x = Number(_parent._name) - y;
with (_root) {
var j = y;
while (j > 0) {
drawBlock((flag_array[x + j] = flag_array[(x + j) - 10]), x + j);
j = j - 10;
}
if (!x) {
simult--;
}
if (!simult) {
drawNextShape();
drawThisShape();
startFall();
}
}
Symbol 10 MovieClip [block] Frame 1
stop();
Symbol 28 MovieClip Frame 12
stop();
Symbol 39 MovieClip Frame 1
stop();
Symbol 39 MovieClip Frame 3
stop();
Symbol 39 MovieClip Frame 5
stop();
Symbol 39 MovieClip Frame 7
stop();
Symbol 39 MovieClip Frame 9
stop();
Symbol 65 MovieClip Frame 1
stop();
_visible = false;
yes_btn.onPress = function () {
_root.stopFall();
_root.gotoAndStop(2);
};
no_btn.onPress = function () {
_visible = false;
_root.pause_btn.onPress();
};
yes_btn.onKeyDown = function () {
if (Key.getCode() == 89) {
this.onPress();
}
if (Key.getCode() == 78) {
no_btn.onPress();
}
};
Key.addListener(yes_btn);
Symbol 65 MovieClip Frame 2
_root.pause_btn._visible = (_root.quit_btn._visible = false);
name_txt.restrict = "a-z 0-9.:\\-";
name_txt.text = _root.game_so.data.playerName;
Selection.setFocus(name_txt);
Selection.setSelection(name_txt.length, name_txt.length);
ok_btn.onPress = function () {
if (name_txt.length > 0) {
_root.game_so.data.playerName = name_txt.text;
}
_root.nextFrame();
};
ok_btn.onKeyDown = function () {
if (Key.getCode() == 13) {
Key.removeListener(this);
this.onPress();
}
};
Key.removeListener(yes_btn);
Key.addListener(ok_btn);
Symbol 68 MovieClip Frame 1
_visible = false;
hit_mc.onPress = _root.pause;
Symbol 82 MovieClip Frame 1
stop();
errorMsg = "";