javascript 俄罗斯方块(含完整游戏代码)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/C_Creator/article/details/80596924

俄罗斯方块类

以下代码包括了俄罗斯方块生成以及上下左右旋转的操作。
完整代码在github上: [俄罗斯方块小游戏源码](https://github.com/suchuanpao/tetris.git)
function Tetris(pos, type, dir) {
    this.turn = function () {
        var flag = 1;
        switch (this.types_name[this.type]) {
            case "SQUARE":
                return true;
            case "LINE":
                flag = this.tetris[1].y-this.centor.y?1:-1;
                break;
            case "SWAGERLY":
            case "RSWAGERLY":
                flag = this.tetris[2].y-this.centor.y?1:-1;
                break;
            case "LBLOCK":
            case "RLBLOCK":
            case "TBLOCK":
                flag = 1;
                break;
        }
        for (var i = 1; i < this.tetris.length; i++) {
            var diff = {"x":this.tetris[i].x-this.centor.x, "y":this.tetris[i].y-this.centor.y};
            this.tetris[i].x = this.centor.x + flag*diff.y;
            this.tetris[i].y = this.centor.y - flag*diff.x;
        }
        return true;
    }
    this.turnback = function () {
        if (this.types_name[this.type] == "SQUARE")
            return true;
        for (var i = 0; i < 3; i++)
            this.turn();
    }
    this.leftSlice = function () {
        this.pos.x--;
    }
    this.rightSlice = function () {
        this.pos.x++;
    }
    this.drop = function () {
        this.pos.y++;
    }
    this.rise = function() {
        this.pos.y--;
    }
    this.body = function () {
        var body = [];
        for (var i = 0; i < this.tetris.length; i++) {
            if (this.tetris[i].y+this.pos.y >= 0)
                body.push({"x":this.tetris[i].x+this.pos.x, "y":this.tetris[i].y+this.pos.y});
        }
        return body;
    }
    this.__init__ = function () {
        var arr = this.types_body[this.type];
        this.tetris = [];
        this.centor = {"x":arr[0]%4-this.origin%4, "y":parseInt(arr[0]/4)-parseInt(this.origin/4)};
        for (var i = 0; i < 4; i++) {
            this.tetris[i] = {"x":arr[i]%4-this.origin%4, "y":parseInt(arr[i]/4)-parseInt(this.origin/4)};
        }
    }
    this.types_name = ["LBLOCK", "RLBLOCK", "TBLOCK", "SWAGERLY", "RSWAGERLY", "LINE", "SQUARE"];
    this.types_body = [
        [5, 1, 2, 9], //LLL
        [6, 1, 2,10],
        [5, 1, 4, 6], //T 
        [5, 2, 6, 9], //555 
        [5, 1, 6,10], 
        [5, 4, 6, 7], //I
        [5, 0, 1, 4],
    ]
    this.origin = 5;
    this.type = type%7;
    this.pos = pos;
    this.__init__();
    for (i = 0; i < dir%4; i++)
        this.turn();
    return this;
}
阅读更多
换一批

没有更多推荐了,返回首页