<!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>
<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>