User prompt
Double the speed of targets, let targets have the same speed.
User prompt
Remove hero, we dont need it
User prompt
Fix Bug: 'ReferenceError: hero is not defined' in this line: 'hero.x = pos.x;' Line Number: 55
User prompt
Remove all existing objects. Make 5 dots on random positions (call them 'Targets') Let dots go in random directions, but only vertically or horizontally When Target leaves the scene, make it appear on the opposite side of the scene.
User prompt
make 5 dots on random positions
User prompt
Remove all
User prompt
When touches left =0, and still there's at least one target on the screen, the game is over.
User prompt
When number of touches = 0, if not all targets are destroyed, the game is over
User prompt
When the player touches 'Next' button, just increase the level number, reset the number of touches to 5 and create new targets on the screen. Make this numberr or targets: level number * 5
User prompt
Fix Bug: 'ReferenceError: touchesLeftText is not defined' in this line: 'if (touchesLeftText) touchesLeftText.destroy();' Line Number: 63
User prompt
Fix Bug: 'ReferenceError: levelText is not defined' in this line: 'if (levelText) levelText.destroy();' Line Number: 55
User prompt
When the level is over, and the user clicks the 'Next' button, destroy all text fields and re-create them.
User prompt
Fix Bug: 'ReferenceError: touchesLeftText is not defined' in this line: 'touchesLeftText.setText('Touches left: ' + ammunition);' Line Number: 62
User prompt
Fix Bug: 'ReferenceError: touchesLeftText is not defined' in this line: 'touchesLeftText.setText('Touches left: ' + ammunition);' Line Number: 62
User prompt
There's a duplicate of text field 'Touches left'. Fix it.
User prompt
Fix Bug: 'ReferenceError: touchesLeftText is not defined' in this line: 'touchesLeftText.setText('Touches left: ' + ammunition);' Line Number: 62
User prompt
Fix Bug: 'ReferenceError: touchesLeftText is not defined' in this line: 'touchesLeftText.setText('Touches left: ' + ammunition);' Line Number: 62
User prompt
Fix Bug: 'ReferenceError: touchesLeftText is not defined' in this line: 'touchesLeftText.setText('Touches left: ' + ammunition);' Line Number: 62
User prompt
Fix Bug: 'ReferenceError: levelText is not defined' in this line: 'levelText.setText('Lvl: ' + self.level);' Line Number: 55
User prompt
Fix Bug: 'ReferenceError: levelText is not defined' in this line: 'levelText.setText('Lvl: ' + self.level);' Line Number: 55
User prompt
When user taps the 'Next level' button, start the next level. Create more targets (number of targets should be = level * 5. Reset number or allowed touches to 5.
User prompt
Fix Bug: 'ReferenceError: levelText is not defined' in this line: 'levelText.setText('Lvl: ' + self.level);' Line Number: 55
User prompt
Make the 'Next' level buton 3 times wider. Place a label on it: "Next"
User prompt
Center the instruction text horizontally.
User prompt
Fix Bug: 'TypeError: Cannot read properties of undefined (reading 'setText')' in this line: 'self.levelText.setText('Lvl: ' + self.level);' Line Number: 48
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.