forked from: flash on 2014-9-26

by raa
♥0 | Line 441 | Modified 2016-01-10 07:09:12 | MIT License
play

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