ss

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Phaser - Getting started</title>
<script type="text/javascript" src="http://localhost/phaser-master/examples/_site/js/phaser.js"></script>
    <style type="text/css">
        body {
            margin: 0;
        }
    </style>
</head>
<body>


<script type="text/javascript">
var game = new Phaser.Game(520, 480, Phaser.AUTO, '', {
    preload : preload,
    create : create,
    update : update,
    render : render
});

function preload() {
    game.load.spritesheet('fangkuai', 'assets/fangkuai.png',24,24);
    game.load.image('bg', 'assets/bg_wangge.png');
}
var cursors;
var current_blocks = {};
var next_blocks = {};
var old_blocks = [];
var text;
var centerX = 384 / 2;
var areaWidth = 384;
var areaHeight = 480;
var areaZero = 0;
var interval_time = 0;
var angleFlag = true;
var block_width = 24;
var halfWidth = 12;
var completeNum = 384 / 24;
var score = 0;
var level = 1000;
var scoreText;
function create() {
    var bg = game.add.sprite(0,0,'bg');
    current_blocks = getBlocks(centerX, -0);
    next_blocks = getBlocks(405, 50, current_blocks.type, 0.7);
    var text = game.add.text(405, 10, 'Score', {
        fill : '#fff'
    });
    var scoreText = game.add.text(405, 50, '0', {
        fill : '#fff'
    });
    game.time.events.loop(level, autoDown);
    cursors = game.input.keyboard.createCursorKeys();
    game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR).onDown.add(angleIt);

}
function angleIt() {
    if (!angleFlag) {
        var x1, x2, y1, y2;
        for ( var i = 0; i < 4; i++) {
            x1 = current_blocks.data[i].x;
            y1 = current_blocks.data[i].y;
            x1 -= current_blocks.centerX;
            y1 -= current_blocks.centerY;
            x2 = -y1;
            y2 = x1;
            x2 += current_blocks.centerX;
            y2 += current_blocks.centerY;
            current_blocks.data[i].x = x2;
            current_blocks.data[i].y = y2;
        }
    }

}

function getBlocks(centerX, centerY, type, scale) {
    var fangkuai1;
    var fangkuai2;
    var fangkuai3;
    var fangkuai4;
    var block_type;
    var types = [ 'o', 't', 'l', 'j', 'i', 's', 'z' ];
    if (type) {
        block_type = type;
    } else {
        block_type = types[Math.floor(Math.random() * 7)];
    }
     
    switch (block_type) {
    case 'o':
        fangkuai1 = game.add.sprite(centerX - halfWidth, centerY - halfWidth, 'fangkuai',0);
        fangkuai2 = game.add.sprite(centerX - halfWidth, centerY + halfWidth, 'fangkuai',0);
        fangkuai3 = game.add.sprite(centerX + halfWidth, centerY + halfWidth, 'fangkuai',0);
        fangkuai4 = game.add.sprite(centerX + halfWidth, centerY - halfWidth, 'fangkuai',0);
        break;
    case 't':
        fangkuai1 = game.add.sprite(centerX + halfWidth, centerY - halfWidth, 'fangkuai',1);
        fangkuai2 = game.add.sprite(centerX + halfWidth, centerY + halfWidth, 'fangkuai',1);
        fangkuai3 = game.add.sprite(centerX - halfWidth, centerY + halfWidth, 'fangkuai',1);
        fangkuai4 = game.add.sprite(centerX + halfWidth * 3, centerY + halfWidth, 'fangkuai',1);
        break;
    case 'l':
        fangkuai1 = game.add.sprite(centerX - halfWidth, centerY - halfWidth, 'fangkuai',2);
        fangkuai2 = game.add.sprite(centerX - halfWidth, centerY + halfWidth, 'fangkuai',2);
        fangkuai3 = game.add.sprite(centerX - halfWidth, centerY + halfWidth * 3, 'fangkuai',2);
        fangkuai4 = game.add.sprite(centerX + halfWidth, centerY + halfWidth * 3, 'fangkuai',2);
        break;
    case 'j':
        fangkuai1 = game.add.sprite(centerX + halfWidth, centerY - halfWidth, 'fangkuai',2);
        fangkuai2 = game.add.sprite(centerX + halfWidth, centerY + halfWidth, 'fangkuai',2);
        fangkuai3 = game.add.sprite(centerX + halfWidth, centerY + halfWidth * 3, 'fangkuai',2);
        fangkuai4 = game.add.sprite(centerX - halfWidth, centerY + halfWidth * 3, 'fangkuai',2);
        break;
    case 'i':
        fangkuai1 = game.add.sprite(centerX + halfWidth, centerY - halfWidth * 3, 'fangkuai',3);
        fangkuai2 = game.add.sprite(centerX + halfWidth, centerY - halfWidth, 'fangkuai',3);
        fangkuai3 = game.add.sprite(centerX + halfWidth, centerY + halfWidth, 'fangkuai',3);
        fangkuai4 = game.add.sprite(centerX + halfWidth, centerY + halfWidth * 3, 'fangkuai',3);
        break;
    case 's':
        fangkuai1 = game.add.sprite(centerX + halfWidth * 3, centerY - halfWidth, 'fangkuai',3);
        fangkuai2 = game.add.sprite(centerX + halfWidth, centerY - halfWidth, 'fangkuai',3);
        fangkuai3 = game.add.sprite(centerX + halfWidth, centerY + halfWidth, 'fangkuai',3);
        fangkuai4 = game.add.sprite(centerX - halfWidth, centerY + halfWidth, 'fangkuai',3);
        break;
    case 'z':
        fangkuai1 = game.add.sprite(centerX - halfWidth, centerY - halfWidth, 'fangkuai',3);
        fangkuai2 = game.add.sprite(centerX + halfWidth, centerY - halfWidth, 'fangkuai',3);
        fangkuai3 = game.add.sprite(centerX + halfWidth, centerY + halfWidth, 'fangkuai',3);
        fangkuai4 = game.add.sprite(centerX + halfWidth * 3, centerY + halfWidth, 'fangkuai',3);
        break;
    }

    var blocks = {
        'type' : block_type,
        'data' : [ fangkuai1, fangkuai2, fangkuai3, fangkuai4 ],
        'centerX' : centerX,
        'centerY' : centerY
    };
    if (scale) {
        for ( var i = 0; i < 4; i++) {
            blocks.data[i].scale.setTo(scale, scale);
        }
    }
    
    return blocks;
}



function checkLine() {
    var lineFlag = false;
    var obj = {};
    var max = [];
    for ( var i = 0; i < old_blocks.length; i++) {
        if (obj.hasOwnProperty(old_blocks[i].y)) {
            obj[old_blocks[i].y]++;
        } else {
            obj[old_blocks[i].y] = 1;
        }

    }

    
    for ( var o in obj) {
        if (obj[o] == completeNum) {
            max.push(o);
            lineFlag = true;
        }
    }

    if (lineFlag) {
        for ( var i = 0; i < max.length; i++) {
            for ( var j = 0; j < old_blocks.length; j++) {
                if (old_blocks[j].y == max[i]) {
                    old_blocks[j].kill();
                    old_blocks.splice(j, 1);
                    j--;
                }
            }
        }
        

        for ( var i = 0; i < max.length; i++) {
            for ( var j = 0; j < old_blocks.length; j++) {
                if (old_blocks[j].y < max[i]) {
                    old_blocks[j].y += block_width;
                }

            }
        }
        score += 100;
        text.text = "score:"+score+"";
        
    }

}

function autoDown() {
    if (checkCollide()) {
        for ( var j = 0; j < 4; j++) {
            old_blocks.push(current_blocks.data[j]);
        }

        current_blocks = getBlocks(centerX, 0);
        next_blocks = getBlocks(405, 50, current_blocks.type, 0.7);
    }
    for ( var i = 0; i < 4; i++) {
        current_blocks.data[i].y += block_width;
    }
    current_blocks.centerY += block_width;

}

function getrotated() {
    var temp_array = new Array();
    var x1, y1, x2, y2;
    for ( var i = 0; i < 4; i++) {
        x1 = current_blocks.data[i].x;
        y1 = current_blocks.data[i].y;
        x1 -= current_blocks.centerX;
        y1 -= current_blocks.centerY;
        x2 = -y1;
        y2 = x1;
        x2 += current_blocks.centerX;
        y2 += current_blocks.centerY;
        temp_array[i * 2] = x2;
        temp_array[i * 2 + 1] = y2;
    }
    return temp_array;
}
function rotatecollide() {
    var arr = getrotated();
    var len = old_blocks.length;
    for ( var i = 0; i < 4; i++) {
        if ((arr[i * 2] < game.world.bounds.x)
                || (arr[i * 2] > areaWidth))
            return true;
        if (arr[i * 2 + 1] > areaHeight)
            return true;
        for ( var j = 0; j < len; j++) {
            if ((Math.abs(arr[i * 2] - old_blocks[j].x) < block_width)
                    && (Math.abs(arr[i * 2 + 1] - old_blocks[j].y) < block_width)) {
                return true;
            }
        }
    }
    return false;
}
function checkCollideForUpdate(type) {
    if (old_blocks.length == 0) {
        if (type == 'left') {
            for ( var i = 0; i < 4; i++) {
                if (current_blocks.data[i].x - halfWidth == areaZero) {
                    return true;
                }
            }
        } else if (type == 'right') {
            for ( var i = 0; i < 4; i++) {
                if (current_blocks.data[i].x + halfWidth == areaWidth) {
                    return true;
                }
            }
        }
    } else {
        if (type == 'left') {
            for ( var i = 0; i < 4; i++) {
                for ( var j = 0; j < old_blocks.length; j++) {
                    if (current_blocks.data[i].x - halfWidth == areaZero
                            || ((current_blocks.data[i].y == old_blocks[j].y) && (current_blocks.data[i].x - block_width == old_blocks[j].x))) {
                        return true;
                    }
                }
            }
        } else if (type == 'right') {
            for ( var i = 0; i < 4; i++) {
                for ( var j = 0; j < old_blocks.length; j++) {
                    if (current_blocks.data[i].x + halfWidth == areaWidth
                            || ((current_blocks.data[i].y == old_blocks[j].y) && (current_blocks.data[i].x + block_width == old_blocks[j].x))) {
                        return true;
                    }

                }
            }
        }

    }
    return false;
}
function checkCollide() {
    if (old_blocks.length == 0) {
        for ( var i = 0; i < 4; i++) {
            if (current_blocks.data[i].y + block_width >= areaHeight) {
                return true;
            }
        }
    } else {

        for ( var i = 0; i < 4; i++) {
            for ( var j = 0; j < old_blocks.length; j++) {
                
                if (current_blocks.data[i].y + block_width >= areaHeight
                        || ((current_blocks.data[i].y + block_width == old_blocks[j].y) && (current_blocks.data[i].x == old_blocks[j].x))) {
                    return true;
                }
                
            }
        }
    }
    return false;
}

function update() {
    checkLine();
    angleFlag = rotatecollide();
    if (cursors.left.isDown) {
        if (game.time.now > interval_time && !checkCollideForUpdate('left')) {
            for ( var i = 0; i < 4; i++) {
                current_blocks.data[i].x -= block_width;
            }
            current_blocks.centerX -= block_width;
            interval_time = game.time.now + 100;
        }
    }
    if (cursors.right.isDown) {
        if (game.time.now > interval_time && !checkCollideForUpdate('right')) {
            for ( var i = 0; i < 4; i++) {
                current_blocks.data[i].x += block_width;
            }
            current_blocks.centerX += block_width;
            interval_time = game.time.now + 100;
        }
    }
    if (cursors.down.isDown) {
        if (game.time.now > interval_time) {
            autoDown();
            interval_time = game.time.now + 50;
        }
    }

}
function render() {
    //
}
</script>


</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值