/**** * Classes ****/ var Circle = Container.expand(function () { var self = Container.call(this); self.shapeGraphics = self.attachAsset('circleAsset', { anchorX: 0.5, anchorY: 0.5 }); self.matched = false; self.match = function () { self.matched = true; }; }); var Player = Container.expand(function (shape) { var self = Container.call(this); self.playerGraphics = self.createAsset(shape + 'Asset', { anchorX: 0.5, anchorY: 0.5 }); self.score = 0; self.shape = shape; self.incrementScore = function () { self.score += 1; }; }); var Square = Container.expand(function () { var self = Container.call(this); self.shapeGraphics = self.attachAsset('squareAsset', { anchorX: 0.5, anchorY: 0.5 }); self.matched = false; self.match = function () { self.matched = true; }; }); var Triangle = Container.expand(function () { var self = Container.call(this); self.shapeGraphics = self.attachAsset('triangleAsset', { anchorX: 0.5, anchorY: 0.5 }); self.matched = false; self.match = function () { self.matched = true; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var gameStarted = false; LK.playMusic('ERR', { loop: true, fade: { start: 0, end: 1, duration: 1000 } }); var leftBackground = game.attachAsset('backgroundAsset', {}); leftBackground.width = 2048 / 3; leftBackground.height = 2732; leftBackground.tint = 0xFF6347; var middleBackground = game.attachAsset('backgroundAsset', {}); middleBackground.width = 2048 / 3; middleBackground.height = 2732; middleBackground.x = 2048 / 3; middleBackground.tint = 0x98FB98; var rightBackground = game.attachAsset('backgroundAsset', {}); rightBackground.width = 2048 / 3; rightBackground.height = 2732; rightBackground.x = 2048 / 3 * 2; rightBackground.tint = 0x87CEFA; var leftShapes = []; var middleShapes = []; var rightShapes = []; var leftPlayer = game.addChild(new Player('square')); leftPlayer.x = 2048 / 6; leftPlayer.y = 2732 - leftPlayer.playerGraphics.height; var middlePlayer = game.addChild(new Player('circle')); middlePlayer.x = 2048 / 2; middlePlayer.y = 2732 - middlePlayer.playerGraphics.height; var rightPlayer = game.addChild(new Player('triangle')); rightPlayer.x = 2048 * 5 / 6; rightPlayer.y = 2732 - rightPlayer.playerGraphics.height; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); var tutorialTxt = new Text2('Click to start. Match the shapes!', { size: 100, fill: "#ffffff" }); tutorialTxt.anchor.set(.5, .5); tutorialTxt.x = 2048 / 2; tutorialTxt.y = 2732 / 2; game.addChild(tutorialTxt); var leftEnableTxt = new Text2('Left side enabled at score 10', { size: 40, fill: "#ffffff" }); leftEnableTxt.anchor.set(.5, 1); leftEnableTxt.x = 2048 / 6; leftEnableTxt.y = leftPlayer.y - leftPlayer.playerGraphics.height / 2 - 20; game.addChild(leftEnableTxt); var rightEnableTxt = new Text2('Right side enabled at score 20', { size: 40, fill: "#ffffff" }); rightEnableTxt.anchor.set(.5, 1); rightEnableTxt.x = 2048 * 5 / 6; rightEnableTxt.y = rightPlayer.y - rightPlayer.playerGraphics.height / 2 - 20; game.addChild(rightEnableTxt); scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score); scoreTxt.anchor.set(.5, 0); LK.gui.top.addChild(scoreTxt); var shapeTypes = [Circle, Square, Triangle]; var shapeOrder = ['square', 'circle', 'triangle']; var shapeSpawnInterval = 40; var shapeSpeed = 7.49 + Math.min((leftPlayer.score + middlePlayer.score + rightPlayer.score) * 0.5, 20); var shapeSpawnCounter = 0; LK.on('tick', function () { if (gameStarted) { if (leftPlayer.score + middlePlayer.score + rightPlayer.score >= 10 && (leftShapes.length === 0 || leftShapes.length > 0 && leftShapes[leftShapes.length - 1].y >= 2732 * 3 / 5)) { var shapeType = shapeTypes[Math.floor(Math.random() * shapeTypes.length)]; var shape = game.addChild(new shapeType()); shape.x = leftPlayer.x; shape.y = 0; leftShapes.push(shape); leftEnableTxt.destroy(); } if (middleShapes.length === 0 || middleShapes.length > 0 && middleShapes[middleShapes.length - 1].y >= 2732 * 3 / 5) { var shapeType = shapeTypes[Math.floor(Math.random() * shapeTypes.length)]; var shape = game.addChild(new shapeType()); shape.x = middlePlayer.x; shape.y = 0; middleShapes.push(shape); } if (leftPlayer.score + middlePlayer.score + rightPlayer.score >= 20 && (rightShapes.length === 0 || rightShapes.length > 0 && rightShapes[rightShapes.length - 1].y >= 2732 * 3 / 5)) { var shapeType = shapeTypes[Math.floor(Math.random() * shapeTypes.length)]; var shape = game.addChild(new shapeType()); shape.x = rightPlayer.x; shape.y = 0; rightShapes.push(shape); rightEnableTxt.destroy(); } } for (var a = leftShapes.length - 1; a >= 0; a--) { leftShapes[a].y += shapeSpeed; if (leftShapes[a].y >= leftPlayer.y) { if (leftShapes[a] instanceof Circle && leftPlayer.shape === 'circle' || leftShapes[a] instanceof Square && leftPlayer.shape === 'square' || leftShapes[a] instanceof Triangle && leftPlayer.shape === 'triangle') { leftPlayer.incrementScore(); scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score); LK.effects.flashObject(leftBackground, 0xFFFFFF, 1000); LK.getSound('shape_pop').play(); leftShapes[a].destroy(); leftShapes.splice(a, 1); } else { LK.showGameOver(); } } else if (leftShapes[a].y > 2732) { leftShapes[a].destroy(); leftShapes.splice(a, 1); } } for (var a = middleShapes.length - 1; a >= 0; a--) { middleShapes[a].y += shapeSpeed; if (middleShapes[a].y >= middlePlayer.y) { if (middleShapes[a] instanceof Circle && middlePlayer.shape === 'circle' || middleShapes[a] instanceof Square && middlePlayer.shape === 'square' || middleShapes[a] instanceof Triangle && middlePlayer.shape === 'triangle') { middlePlayer.incrementScore(); scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score); LK.effects.flashObject(middleBackground, 0xFFFFFF, 1000); LK.getSound('shape_pop').play(); middleShapes[a].destroy(); middleShapes.splice(a, 1); } else { LK.showGameOver(); } } else if (middleShapes[a].y > 2732) { middleShapes[a].destroy(); middleShapes.splice(a, 1); } } for (var a = rightShapes.length - 1; a >= 0; a--) { rightShapes[a].y += shapeSpeed; if (rightShapes[a].y >= rightPlayer.y) { if (rightShapes[a] instanceof Circle && rightPlayer.shape === 'circle' || rightShapes[a] instanceof Square && rightPlayer.shape === 'square' || rightShapes[a] instanceof Triangle && rightPlayer.shape === 'triangle') { rightPlayer.incrementScore(); scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score); LK.effects.flashObject(rightBackground, 0xFFFFFF, 1000); LK.getSound('shape_pop').play(); rightShapes[a].destroy(); rightShapes.splice(a, 1); } else { LK.showGameOver(); } } else if (rightShapes[a].y > 2732) { rightShapes[a].destroy(); rightShapes.splice(a, 1); } } }); game.on('down', function (x, y, obj) { if (!gameStarted) { gameStarted = true; tutorialTxt.destroy(); return; } var event = obj; var pos = game.toLocal(event.global); if (pos.x >= leftPlayer.x - leftPlayer.playerGraphics.width / 2 && pos.x <= leftPlayer.x + leftPlayer.playerGraphics.width / 2) { var shapeOrder = ['square', 'circle', 'triangle']; var currentShapeIndex = shapeOrder.indexOf(leftPlayer.shape); currentShapeIndex = (currentShapeIndex + 1) % shapeOrder.length; leftPlayer.shape = shapeOrder[currentShapeIndex]; leftPlayer.removeChild(leftPlayer.playerGraphics); leftPlayer.playerGraphics = leftPlayer.createAsset(leftPlayer.shape + 'Asset', { anchorX: 0.5, anchorY: 0.5 }); leftPlayer.addChild(leftPlayer.playerGraphics); } if (pos.x >= middlePlayer.x - middlePlayer.playerGraphics.width / 2 && pos.x <= middlePlayer.x + middlePlayer.playerGraphics.width / 2) { var shapeOrder = ['square', 'circle', 'triangle']; var currentShapeIndex = shapeOrder.indexOf(middlePlayer.shape); currentShapeIndex = (currentShapeIndex + 1) % shapeOrder.length; middlePlayer.shape = shapeOrder[currentShapeIndex]; middlePlayer.removeChild(middlePlayer.playerGraphics); middlePlayer.playerGraphics = middlePlayer.createAsset(middlePlayer.shape + 'Asset', { anchorX: 0.5, anchorY: 0.5 }); middlePlayer.addChild(middlePlayer.playerGraphics); } if (pos.x >= rightPlayer.x - rightPlayer.playerGraphics.width / 2 && pos.x <= rightPlayer.x + rightPlayer.playerGraphics.width / 2) { var shapeOrder = ['square', 'circle', 'triangle']; var currentShapeIndex = shapeOrder.indexOf(rightPlayer.shape); currentShapeIndex = (currentShapeIndex + 1) % shapeOrder.length; rightPlayer.shape = shapeOrder[currentShapeIndex]; rightPlayer.removeChild(rightPlayer.playerGraphics); rightPlayer.playerGraphics = rightPlayer.createAsset(rightPlayer.shape + 'Asset', { anchorX: 0.5, anchorY: 0.5 }); rightPlayer.addChild(rightPlayer.playerGraphics); } var event = obj; var pos = game.toLocal(event.global); });
/****
* Classes
****/
var Circle = Container.expand(function () {
var self = Container.call(this);
self.shapeGraphics = self.attachAsset('circleAsset', {
anchorX: 0.5,
anchorY: 0.5
});
self.matched = false;
self.match = function () {
self.matched = true;
};
});
var Player = Container.expand(function (shape) {
var self = Container.call(this);
self.playerGraphics = self.createAsset(shape + 'Asset', {
anchorX: 0.5,
anchorY: 0.5
});
self.score = 0;
self.shape = shape;
self.incrementScore = function () {
self.score += 1;
};
});
var Square = Container.expand(function () {
var self = Container.call(this);
self.shapeGraphics = self.attachAsset('squareAsset', {
anchorX: 0.5,
anchorY: 0.5
});
self.matched = false;
self.match = function () {
self.matched = true;
};
});
var Triangle = Container.expand(function () {
var self = Container.call(this);
self.shapeGraphics = self.attachAsset('triangleAsset', {
anchorX: 0.5,
anchorY: 0.5
});
self.matched = false;
self.match = function () {
self.matched = true;
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
var gameStarted = false;
LK.playMusic('ERR', {
loop: true,
fade: {
start: 0,
end: 1,
duration: 1000
}
});
var leftBackground = game.attachAsset('backgroundAsset', {});
leftBackground.width = 2048 / 3;
leftBackground.height = 2732;
leftBackground.tint = 0xFF6347;
var middleBackground = game.attachAsset('backgroundAsset', {});
middleBackground.width = 2048 / 3;
middleBackground.height = 2732;
middleBackground.x = 2048 / 3;
middleBackground.tint = 0x98FB98;
var rightBackground = game.attachAsset('backgroundAsset', {});
rightBackground.width = 2048 / 3;
rightBackground.height = 2732;
rightBackground.x = 2048 / 3 * 2;
rightBackground.tint = 0x87CEFA;
var leftShapes = [];
var middleShapes = [];
var rightShapes = [];
var leftPlayer = game.addChild(new Player('square'));
leftPlayer.x = 2048 / 6;
leftPlayer.y = 2732 - leftPlayer.playerGraphics.height;
var middlePlayer = game.addChild(new Player('circle'));
middlePlayer.x = 2048 / 2;
middlePlayer.y = 2732 - middlePlayer.playerGraphics.height;
var rightPlayer = game.addChild(new Player('triangle'));
rightPlayer.x = 2048 * 5 / 6;
rightPlayer.y = 2732 - rightPlayer.playerGraphics.height;
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
var tutorialTxt = new Text2('Click to start. Match the shapes!', {
size: 100,
fill: "#ffffff"
});
tutorialTxt.anchor.set(.5, .5);
tutorialTxt.x = 2048 / 2;
tutorialTxt.y = 2732 / 2;
game.addChild(tutorialTxt);
var leftEnableTxt = new Text2('Left side enabled at score 10', {
size: 40,
fill: "#ffffff"
});
leftEnableTxt.anchor.set(.5, 1);
leftEnableTxt.x = 2048 / 6;
leftEnableTxt.y = leftPlayer.y - leftPlayer.playerGraphics.height / 2 - 20;
game.addChild(leftEnableTxt);
var rightEnableTxt = new Text2('Right side enabled at score 20', {
size: 40,
fill: "#ffffff"
});
rightEnableTxt.anchor.set(.5, 1);
rightEnableTxt.x = 2048 * 5 / 6;
rightEnableTxt.y = rightPlayer.y - rightPlayer.playerGraphics.height / 2 - 20;
game.addChild(rightEnableTxt);
scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score);
scoreTxt.anchor.set(.5, 0);
LK.gui.top.addChild(scoreTxt);
var shapeTypes = [Circle, Square, Triangle];
var shapeOrder = ['square', 'circle', 'triangle'];
var shapeSpawnInterval = 40;
var shapeSpeed = 7.49 + Math.min((leftPlayer.score + middlePlayer.score + rightPlayer.score) * 0.5, 20);
var shapeSpawnCounter = 0;
LK.on('tick', function () {
if (gameStarted) {
if (leftPlayer.score + middlePlayer.score + rightPlayer.score >= 10 && (leftShapes.length === 0 || leftShapes.length > 0 && leftShapes[leftShapes.length - 1].y >= 2732 * 3 / 5)) {
var shapeType = shapeTypes[Math.floor(Math.random() * shapeTypes.length)];
var shape = game.addChild(new shapeType());
shape.x = leftPlayer.x;
shape.y = 0;
leftShapes.push(shape);
leftEnableTxt.destroy();
}
if (middleShapes.length === 0 || middleShapes.length > 0 && middleShapes[middleShapes.length - 1].y >= 2732 * 3 / 5) {
var shapeType = shapeTypes[Math.floor(Math.random() * shapeTypes.length)];
var shape = game.addChild(new shapeType());
shape.x = middlePlayer.x;
shape.y = 0;
middleShapes.push(shape);
}
if (leftPlayer.score + middlePlayer.score + rightPlayer.score >= 20 && (rightShapes.length === 0 || rightShapes.length > 0 && rightShapes[rightShapes.length - 1].y >= 2732 * 3 / 5)) {
var shapeType = shapeTypes[Math.floor(Math.random() * shapeTypes.length)];
var shape = game.addChild(new shapeType());
shape.x = rightPlayer.x;
shape.y = 0;
rightShapes.push(shape);
rightEnableTxt.destroy();
}
}
for (var a = leftShapes.length - 1; a >= 0; a--) {
leftShapes[a].y += shapeSpeed;
if (leftShapes[a].y >= leftPlayer.y) {
if (leftShapes[a] instanceof Circle && leftPlayer.shape === 'circle' || leftShapes[a] instanceof Square && leftPlayer.shape === 'square' || leftShapes[a] instanceof Triangle && leftPlayer.shape === 'triangle') {
leftPlayer.incrementScore();
scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score);
LK.effects.flashObject(leftBackground, 0xFFFFFF, 1000);
LK.getSound('shape_pop').play();
leftShapes[a].destroy();
leftShapes.splice(a, 1);
} else {
LK.showGameOver();
}
} else if (leftShapes[a].y > 2732) {
leftShapes[a].destroy();
leftShapes.splice(a, 1);
}
}
for (var a = middleShapes.length - 1; a >= 0; a--) {
middleShapes[a].y += shapeSpeed;
if (middleShapes[a].y >= middlePlayer.y) {
if (middleShapes[a] instanceof Circle && middlePlayer.shape === 'circle' || middleShapes[a] instanceof Square && middlePlayer.shape === 'square' || middleShapes[a] instanceof Triangle && middlePlayer.shape === 'triangle') {
middlePlayer.incrementScore();
scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score);
LK.effects.flashObject(middleBackground, 0xFFFFFF, 1000);
LK.getSound('shape_pop').play();
middleShapes[a].destroy();
middleShapes.splice(a, 1);
} else {
LK.showGameOver();
}
} else if (middleShapes[a].y > 2732) {
middleShapes[a].destroy();
middleShapes.splice(a, 1);
}
}
for (var a = rightShapes.length - 1; a >= 0; a--) {
rightShapes[a].y += shapeSpeed;
if (rightShapes[a].y >= rightPlayer.y) {
if (rightShapes[a] instanceof Circle && rightPlayer.shape === 'circle' || rightShapes[a] instanceof Square && rightPlayer.shape === 'square' || rightShapes[a] instanceof Triangle && rightPlayer.shape === 'triangle') {
rightPlayer.incrementScore();
scoreTxt.setText(leftPlayer.score + middlePlayer.score + rightPlayer.score);
LK.effects.flashObject(rightBackground, 0xFFFFFF, 1000);
LK.getSound('shape_pop').play();
rightShapes[a].destroy();
rightShapes.splice(a, 1);
} else {
LK.showGameOver();
}
} else if (rightShapes[a].y > 2732) {
rightShapes[a].destroy();
rightShapes.splice(a, 1);
}
}
});
game.on('down', function (x, y, obj) {
if (!gameStarted) {
gameStarted = true;
tutorialTxt.destroy();
return;
}
var event = obj;
var pos = game.toLocal(event.global);
if (pos.x >= leftPlayer.x - leftPlayer.playerGraphics.width / 2 && pos.x <= leftPlayer.x + leftPlayer.playerGraphics.width / 2) {
var shapeOrder = ['square', 'circle', 'triangle'];
var currentShapeIndex = shapeOrder.indexOf(leftPlayer.shape);
currentShapeIndex = (currentShapeIndex + 1) % shapeOrder.length;
leftPlayer.shape = shapeOrder[currentShapeIndex];
leftPlayer.removeChild(leftPlayer.playerGraphics);
leftPlayer.playerGraphics = leftPlayer.createAsset(leftPlayer.shape + 'Asset', {
anchorX: 0.5,
anchorY: 0.5
});
leftPlayer.addChild(leftPlayer.playerGraphics);
}
if (pos.x >= middlePlayer.x - middlePlayer.playerGraphics.width / 2 && pos.x <= middlePlayer.x + middlePlayer.playerGraphics.width / 2) {
var shapeOrder = ['square', 'circle', 'triangle'];
var currentShapeIndex = shapeOrder.indexOf(middlePlayer.shape);
currentShapeIndex = (currentShapeIndex + 1) % shapeOrder.length;
middlePlayer.shape = shapeOrder[currentShapeIndex];
middlePlayer.removeChild(middlePlayer.playerGraphics);
middlePlayer.playerGraphics = middlePlayer.createAsset(middlePlayer.shape + 'Asset', {
anchorX: 0.5,
anchorY: 0.5
});
middlePlayer.addChild(middlePlayer.playerGraphics);
}
if (pos.x >= rightPlayer.x - rightPlayer.playerGraphics.width / 2 && pos.x <= rightPlayer.x + rightPlayer.playerGraphics.width / 2) {
var shapeOrder = ['square', 'circle', 'triangle'];
var currentShapeIndex = shapeOrder.indexOf(rightPlayer.shape);
currentShapeIndex = (currentShapeIndex + 1) % shapeOrder.length;
rightPlayer.shape = shapeOrder[currentShapeIndex];
rightPlayer.removeChild(rightPlayer.playerGraphics);
rightPlayer.playerGraphics = rightPlayer.createAsset(rightPlayer.shape + 'Asset', {
anchorX: 0.5,
anchorY: 0.5
});
rightPlayer.addChild(rightPlayer.playerGraphics);
}
var event = obj;
var pos = game.toLocal(event.global);
});