forked from: flash on 2014-9-26
♥0 |
Line 441 |
Modified 2016-01-10 07:09:12 |
MIT License
archived:2017-03-20 11:08:15
ActionScript3 source code
/**
* Copyright raa ( http://wonderfl.net/user/raa )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/O9PN
*/
// forked from daniel.m.novotny's flash on 2014-9-26
//----------------------------------------------------------------------
//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 26 MovieClip Frame 12
//----------------------------------------------------------------------
stop();
//----------------------------------------------------------------------
//Symbol 61 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.onRelease = 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.onRelease();
}
};
Key.addListener(ok_btn);
//----------------------------------------------------------------------
//Frame 24
//----------------------------------------------------------------------
stop();
pause_btn.onPress = function () {
if (gameOver || (quitGame_mc._visible)) {
return(undefined);
}
sound_mc.gotoAndPlay("popMed");
b_mc._visible = !((paused_mc._visible = (paused = !paused)));
if (paused) {
stopFall();
} else {
startFall();
}
};
quit_btn.onPress = function () {
if (gameOver) {
return(undefined);
}
sound_mc.gotoAndPlay("popMed");
stopFall();
b_mc._visible = (paused_mc._visible = false);
quitGame_mc._visible = (paused = true);
};
drawNextShape();
thisShape = nextShape;
drawThisShape();
drawNextShape();
gameOver = false;
startFall();
//----------------------------------------------------------------------
//Symbol 10 MovieClip [block] Frame 1
//----------------------------------------------------------------------
stop();
//----------------------------------------------------------------------
//Symbol 37 MovieClip Frame 1
//----------------------------------------------------------------------
stop();
//----------------------------------------------------------------------
//Frame 25
//----------------------------------------------------------------------
stop();
var gscore = score;
var gname = "tetris";
getURL ("index.php?act=Arcade&do=newscore", "_self", "POST");
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.gid = "4";
scoreboard_lv.sendAndLoad("arcade/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 = "sending score";
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);
};
//----------------------------------------------------------------------
//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 () {
Key.removeListener(keyListener);
play();
};
highScores_btn.onRelease = function () {
gotoAndStop (25);
};
neave_btn.onRelease = function () {
getURL ("http://www.neave.com/games", "_blank");
};
//----------------------------------------------------------------------
//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();
}
};
//----------------------------------------------------------------------
//Symbol 37 MovieClip Frame 7
//----------------------------------------------------------------------
stop();
//----------------------------------------------------------------------
//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();
}
};
keyListener = new Object();
keyListener.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 :
_root.onEnterFrame = down;
break;
case 38 :
case 88 :
rotate(true);
break;
case 90 :
rotate(false);
}
}
updateAfterEvent();
}
};
keyListener.onKeyUp = function () {
delete _root.onEnterFrame;
};
Key.addListener(keyListener);
gameOver = true;
paused = (moved = false);
score = (scoreTxt = (lines = (thisShape = (nextShape = (rotation = 0)))));
Clip Frame 3
//----------------------------------------------------------------------
stop();
//----------------------------------------------------------------------
//Symbol 61 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();
};
//----------------------------------------------------------------------
//Symbol 37 MovieClip Frame 9
//----------------------------------------------------------------------
stop();