LK.getAsset('target9', 'Target Graphics 9', 0.5, 0.5); LK.getAsset('target8', 'Target Graphics 8', 0.5, 0.5); LK.getAsset('target7', 'Target Graphics 7', 0.5, 0.5); LK.getAsset('target6', 'Target Graphics 6', 0.5, 0.5); LK.getAsset('target5', 'Target Graphics 5', 0.5, 0.5); LK.getAsset('target4', 'Target Graphics 4', 0.5, 0.5); LK.getAsset('target3', 'Target Graphics 3', 0.5, 0.5); var Particle = Container.expand(function () { var self = Container.call(this); var particleGraphics = self.createAsset('particle', 'Particle Graphics', .5, .5); self.speed = Math.random() * 5 + 2; self.direction = Math.random() * Math.PI * 2; self.alpha = 1; self.move = function () { self.x += Math.cos(self.direction) * self.speed; self.y += Math.sin(self.direction) * self.speed; self.alpha -= 0.02; if (self.alpha <= 0) self.destroy(); }; }); var Projectile = Container.expand(function () { var self = Container.call(this); var projectileGraphics = self.createAsset('projectile', 'Projectile Graphics', .5, .5); self.speed = 14; self.direction = ''; self.move = function () { if (self.direction === 'up') self.y -= self.speed; if (self.direction === 'down') self.y += self.speed; if (self.direction === 'left') self.x -= self.speed; if (self.direction === 'right') self.x += self.speed; }; }); var Target = Container.expand(function (game_level) { var self = Container.call(this); var targetID = "target" + game_level % 9; var targetGraphics = self.createAsset(targetID, 'Target Graphics', .5, .5); self.speed = 4 + game_level; if (self.speed > 9) self.speed = 9; self.direction = Math.random() < 0.5 ? 'horizontal' : 'vertical'; self.move = function () { if (self.direction === 'horizontal') { self.x += self.speed; if (self.x > 2048) self.x = 0; if (self.x < 0) self.x = 2048; } else { self.y += self.speed; if (self.y > 2732) self.y = 0; if (self.y < 0) self.y = 2732; } }; }); var Game = Container.expand(function () { var self = Container.call(this); var background = self.createAsset('background', 'Game Background', 0.5, 0.5); background.width = 2048; background.height = 2732; background.x = 1024; background.y = 1366; background.alpha = 0.15; self.addChildAt(background, 0); var instructionsText = new Text2('Tap anywhere to launch projectiles\nand destroy targets.\n\nSpare your touches!', { size: 70, fill: '#ffffff', align: 'center' }); instructionsText.anchor.set(0.5, 0.5); instructionsText.x = 2048 / 2 - 2048 / 7; instructionsText.y = 1000; LK.gui.addChild(instructionsText); self.level = 1; self.touchesLeft = 5; self.targetsLeft = 5; self.points = 0; self.numberOfProjectiles = 0; var levelText = new Text2('Level: ' + self.level, { size: 70, fill: "#ffffff" }); levelText.anchor.set(0, 1); LK.gui.bottomLeft.addChild(levelText); var touchesLeftText = new Text2('Touches Left: ' + self.touchesLeft, { size: 70, fill: "#ffffff" }); touchesLeftText.anchor.set(0, 0); touchesLeftText.y = 50; touchesLeftText.x = 140; LK.gui.topCenter.addChild(touchesLeftText); var pointsText = new Text2('Score: ' + self.points, { size: 70, fill: "#ffffff" }); pointsText.anchor.set(0, 0); pointsText.x = 140; pointsText.y = 140; LK.gui.topCenter.addChild(pointsText); var targetsLeftText = new Text2('Targets Left: ' + self.targetsLeft, { size: 70, fill: "#ffffff" }); var projectiles = []; var enemies = []; var targets = []; var touchesLeft = 5; for (var i = 0; i < 5; i++) { var target = new Target(self.level); target.x = Math.random() * (2048 - 100) + 50; target.y = Math.random() * (2732 - 100) + 50; targets.push(target); self.addChild(target); } var spawnEnemy = function () { var enemy = new Enemy(); enemy.x = Math.random() * 2048; enemy.y = 0; enemies.push(enemy); self.addChild(enemy); }; LK.on('tick', function () { if (projectiles.length === 0 && self.touchesLeft === 0) { LK.effects.flashObject(touchesLeftText, 0xff0000, 1000); LK.setTimeout(function () { LK.showGameOver(); }, 1000); } for (var i = 0; i < targets.length; i++) { targets[i].move(); } for (var i = 0; i < self.children.length; i++) { if (self.children[i] instanceof Projectile) { if (self.children[i].x < 0 || self.children[i].x > 2048 || self.children[i].y < 0 || self.children[i].y > 2732) { var index1 = projectiles.indexOf(self.children[i]); if (index1 > -1) { projectiles.splice(index1, 1); self.numberOfProjectiles--; self.children[i].destroy(); } } } if (self.children[i] instanceof Projectile || self.children[i] instanceof Particle) { self.children[i].move(); for (var j = 0; j < targets.length; j++) { if (self.children[i] && targets[j] && self.children[i].intersects(targets[j])) { var directions = ['up', 'down', 'left', 'right']; for (var k = 0; k < 4; k++) { var newProjectile = new Projectile(); newProjectile.x = targets[j].x; newProjectile.y = targets[j].y; newProjectile.direction = directions[k]; projectiles.push(newProjectile); self.addChild(newProjectile); } var index = projectiles.indexOf(self.children[i]); if (index > -1) { projectiles.splice(index, 1); self.numberOfProjectiles--; self.children[i].destroy(); } targets[j].destroy(); self.targetsLeft--; self.points += 10; pointsText.setText('Score: ' + self.points); targets.splice(j, 1); targetsLeftText.setText('Targets Left: ' + self.targetsLeft); if (self.targetsLeft <= 0) { self.level++; if (self.level > 9) self.level = 1; for (var i = self.children.length - 1; i >= 0; i--) { if (self.children[i] instanceof Projectile) { self.children[i].destroy(); } } var levelUpText = new Text2('Level ' + self.level + '!', { size: 70, fill: '#ffffff', align: 'center' }); levelUpText.anchor.set(0.5, 0.5); levelUpText.x = 700; levelUpText.y = 1000; LK.gui.addChild(levelUpText); var blinkInterval = LK.setInterval(function () { levelUpText.visible = !levelUpText.visible; }, 150); LK.setTimeout(function () { LK.clearInterval(blinkInterval); levelUpText.destroy(); levelText.setText('Level: ' + self.level); }, 1500); LK.setTimeout(function () { for (var i = 0; i < 5 + Math.floor(self.level / 2); i++) { var target = new Target(self.level); target.x = Math.random() * 2048; target.y = Math.random() * 2732; targets.push(target); self.addChild(target); } self.targetsLeft = 5 + Math.floor(self.level / 2); targetsLeftText.setText('Targets Left: ' + self.targetsLeft); projectiles = []; self.touchesLeft += 2; touchesLeftText.setText('Touches Left: ' + self.touchesLeft); }, 2000); } } } } } }); stage.on('down', function (obj) { if (instructionsText) { instructionsText.setText(''); } if (self.touchesLeft > 0) { var pos = obj.event.getLocalPosition(self); var directions = ['up', 'down', 'left', 'right']; for (var i = 0; i < 4; i++) { var projectile = new Projectile(); projectile.x = pos.x; projectile.y = pos.y; projectile.direction = directions[i]; self.numberOfProjectiles++; projectile.on('destroy', function () { var index = projectiles.indexOf(projectile); if (index > -1) { projectiles.splice(index, 1); } }); self.addChild(projectile); projectiles.push(projectile); } self.touchesLeft--; touchesLeftText.setText('Touches Left: ' + self.touchesLeft); } }); });
LK.getAsset('target9', 'Target Graphics 9', 0.5, 0.5);
LK.getAsset('target8', 'Target Graphics 8', 0.5, 0.5);
LK.getAsset('target7', 'Target Graphics 7', 0.5, 0.5);
LK.getAsset('target6', 'Target Graphics 6', 0.5, 0.5);
LK.getAsset('target5', 'Target Graphics 5', 0.5, 0.5);
LK.getAsset('target4', 'Target Graphics 4', 0.5, 0.5);
LK.getAsset('target3', 'Target Graphics 3', 0.5, 0.5);
var Particle = Container.expand(function () {
var self = Container.call(this);
var particleGraphics = self.createAsset('particle', 'Particle Graphics', .5, .5);
self.speed = Math.random() * 5 + 2;
self.direction = Math.random() * Math.PI * 2;
self.alpha = 1;
self.move = function () {
self.x += Math.cos(self.direction) * self.speed;
self.y += Math.sin(self.direction) * self.speed;
self.alpha -= 0.02;
if (self.alpha <= 0) self.destroy();
};
});
var Projectile = Container.expand(function () {
var self = Container.call(this);
var projectileGraphics = self.createAsset('projectile', 'Projectile Graphics', .5, .5);
self.speed = 14;
self.direction = '';
self.move = function () {
if (self.direction === 'up') self.y -= self.speed;
if (self.direction === 'down') self.y += self.speed;
if (self.direction === 'left') self.x -= self.speed;
if (self.direction === 'right') self.x += self.speed;
};
});
var Target = Container.expand(function (game_level) {
var self = Container.call(this);
var targetID = "target" + game_level % 9;
var targetGraphics = self.createAsset(targetID, 'Target Graphics', .5, .5);
self.speed = 4 + game_level;
if (self.speed > 9) self.speed = 9;
self.direction = Math.random() < 0.5 ? 'horizontal' : 'vertical';
self.move = function () {
if (self.direction === 'horizontal') {
self.x += self.speed;
if (self.x > 2048) self.x = 0;
if (self.x < 0) self.x = 2048;
} else {
self.y += self.speed;
if (self.y > 2732) self.y = 0;
if (self.y < 0) self.y = 2732;
}
};
});
var Game = Container.expand(function () {
var self = Container.call(this);
var background = self.createAsset('background', 'Game Background', 0.5, 0.5);
background.width = 2048;
background.height = 2732;
background.x = 1024;
background.y = 1366;
background.alpha = 0.15;
self.addChildAt(background, 0);
var instructionsText = new Text2('Tap anywhere to launch projectiles\nand destroy targets.\n\nSpare your touches!', {
size: 70,
fill: '#ffffff',
align: 'center'
});
instructionsText.anchor.set(0.5, 0.5);
instructionsText.x = 2048 / 2 - 2048 / 7;
instructionsText.y = 1000;
LK.gui.addChild(instructionsText);
self.level = 1;
self.touchesLeft = 5;
self.targetsLeft = 5;
self.points = 0;
self.numberOfProjectiles = 0;
var levelText = new Text2('Level: ' + self.level, {
size: 70,
fill: "#ffffff"
});
levelText.anchor.set(0, 1);
LK.gui.bottomLeft.addChild(levelText);
var touchesLeftText = new Text2('Touches Left: ' + self.touchesLeft, {
size: 70,
fill: "#ffffff"
});
touchesLeftText.anchor.set(0, 0);
touchesLeftText.y = 50;
touchesLeftText.x = 140;
LK.gui.topCenter.addChild(touchesLeftText);
var pointsText = new Text2('Score: ' + self.points, {
size: 70,
fill: "#ffffff"
});
pointsText.anchor.set(0, 0);
pointsText.x = 140;
pointsText.y = 140;
LK.gui.topCenter.addChild(pointsText);
var targetsLeftText = new Text2('Targets Left: ' + self.targetsLeft, {
size: 70,
fill: "#ffffff"
});
var projectiles = [];
var enemies = [];
var targets = [];
var touchesLeft = 5;
for (var i = 0; i < 5; i++) {
var target = new Target(self.level);
target.x = Math.random() * (2048 - 100) + 50;
target.y = Math.random() * (2732 - 100) + 50;
targets.push(target);
self.addChild(target);
}
var spawnEnemy = function () {
var enemy = new Enemy();
enemy.x = Math.random() * 2048;
enemy.y = 0;
enemies.push(enemy);
self.addChild(enemy);
};
LK.on('tick', function () {
if (projectiles.length === 0 && self.touchesLeft === 0) {
LK.effects.flashObject(touchesLeftText, 0xff0000, 1000);
LK.setTimeout(function () {
LK.showGameOver();
}, 1000);
}
for (var i = 0; i < targets.length; i++) {
targets[i].move();
}
for (var i = 0; i < self.children.length; i++) {
if (self.children[i] instanceof Projectile) {
if (self.children[i].x < 0 || self.children[i].x > 2048 || self.children[i].y < 0 || self.children[i].y > 2732) {
var index1 = projectiles.indexOf(self.children[i]);
if (index1 > -1) {
projectiles.splice(index1, 1);
self.numberOfProjectiles--;
self.children[i].destroy();
}
}
}
if (self.children[i] instanceof Projectile || self.children[i] instanceof Particle) {
self.children[i].move();
for (var j = 0; j < targets.length; j++) {
if (self.children[i] && targets[j] && self.children[i].intersects(targets[j])) {
var directions = ['up', 'down', 'left', 'right'];
for (var k = 0; k < 4; k++) {
var newProjectile = new Projectile();
newProjectile.x = targets[j].x;
newProjectile.y = targets[j].y;
newProjectile.direction = directions[k];
projectiles.push(newProjectile);
self.addChild(newProjectile);
}
var index = projectiles.indexOf(self.children[i]);
if (index > -1) {
projectiles.splice(index, 1);
self.numberOfProjectiles--;
self.children[i].destroy();
}
targets[j].destroy();
self.targetsLeft--;
self.points += 10;
pointsText.setText('Score: ' + self.points);
targets.splice(j, 1);
targetsLeftText.setText('Targets Left: ' + self.targetsLeft);
if (self.targetsLeft <= 0) {
self.level++;
if (self.level > 9) self.level = 1;
for (var i = self.children.length - 1; i >= 0; i--) {
if (self.children[i] instanceof Projectile) {
self.children[i].destroy();
}
}
var levelUpText = new Text2('Level ' + self.level + '!', {
size: 70,
fill: '#ffffff',
align: 'center'
});
levelUpText.anchor.set(0.5, 0.5);
levelUpText.x = 700;
levelUpText.y = 1000;
LK.gui.addChild(levelUpText);
var blinkInterval = LK.setInterval(function () {
levelUpText.visible = !levelUpText.visible;
}, 150);
LK.setTimeout(function () {
LK.clearInterval(blinkInterval);
levelUpText.destroy();
levelText.setText('Level: ' + self.level);
}, 1500);
LK.setTimeout(function () {
for (var i = 0; i < 5 + Math.floor(self.level / 2); i++) {
var target = new Target(self.level);
target.x = Math.random() * 2048;
target.y = Math.random() * 2732;
targets.push(target);
self.addChild(target);
}
self.targetsLeft = 5 + Math.floor(self.level / 2);
targetsLeftText.setText('Targets Left: ' + self.targetsLeft);
projectiles = [];
self.touchesLeft += 2;
touchesLeftText.setText('Touches Left: ' + self.touchesLeft);
}, 2000);
}
}
}
}
}
});
stage.on('down', function (obj) {
if (instructionsText) {
instructionsText.setText('');
}
if (self.touchesLeft > 0) {
var pos = obj.event.getLocalPosition(self);
var directions = ['up', 'down', 'left', 'right'];
for (var i = 0; i < 4; i++) {
var projectile = new Projectile();
projectile.x = pos.x;
projectile.y = pos.y;
projectile.direction = directions[i];
self.numberOfProjectiles++;
projectile.on('destroy', function () {
var index = projectiles.indexOf(projectile);
if (index > -1) {
projectiles.splice(index, 1);
}
});
self.addChild(projectile);
projectiles.push(projectile);
}
self.touchesLeft--;
touchesLeftText.setText('Touches Left: ' + self.touchesLeft);
}
});
});
Simple flat icon, 200x200pixels, one bright color square with border. No shadows, top down view, transparent background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple flat icon, 200x200pixels, one bright color circle with border. No shadows, top down view, transparent background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple flat icon, 200x200pixels, one bright color diamond with border. No shadows, top down view, transparent background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple flat icon, 200x200pixels, one bright color romb with border. No shadows, top down view, transparent background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Simple flat icon, 200x200pixels, one bright color smiley with border. No shadows, top down view, transparent background. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
1024x1366 pixels, totally black no more than 20 very small, barely visible, stars here and there. Simple Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Single Game Texture, 50x50pix. In-Game asset. 2d. Blank background. High contrast. No shadows. Light green circle with border. Simple. No other objects. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.