Code edit (1 edits merged)
Please save this source code
User prompt
Position the `instructionsText` exactly in the center of the screen and align it centrally.
User prompt
When level is increased, instead of 5, give the player only one bonus touch
User prompt
When target gets destroyed, don’t create particle effect
User prompt
When level is increased, wait two seconds, then generate (5+level number) new targets. Update the number of targets (on display also). Also, give the player additional 5 touches.
User prompt
When level is increased, wait two seconds, then generate (5+level number) new targets.
User prompt
When level is increased, destroy all projectiles currently on the screen
User prompt
Put the level number text in the bottom
User prompt
When player has no touches left, touching does not produce projectiles
User prompt
When player has no touches left AND there are no projectiles on the screen AND there is at least one target on the screen, game is over
User prompt
When player has no touches left AND there are no projectiles on the screen AND there is at least one target on the screen, game is over
User prompt
When level is increased, generate new targets. Number of new targets should be 5+level number. Also, add 5 new ‘touches’ to the player.
User prompt
When level up text appears, increase number of level
User prompt
Set the position of the level up text to 1/2 of scene width and 1/2 of scene height
User prompt
Level up text should be in the center of the screen!
User prompt
Fix Bug: 'Timeout.tick error: clearInterval is not a function. (In 'clearInterval(blinkInterval)', 'clearInterval' is undefined)' in this line: 'clearInterval(blinkInterval);' Line Number: 144
User prompt
Fix Bug: 'TypeError: setInterval is not a function. (In 'setInterval(function () { __$(118);levelUpText.visible = !levelUpText.visible; }, 150)', 'setInterval' is undefined)' in this line: 'var blinkInterval = setInterval(function () {' Line Number: 140
User prompt
When no targets are left, recreate instructions text but with text “Level up!”. Text should blink for 1.5s and then be destroyed.
User prompt
Move initial instructions text to the right for about 1/8 scene width and up for about 1/4 scene height
User prompt
Move initial instructions text to the left for about 1/4 scene width
User prompt
At the begining of the game, create instructions text field in the center (align it in the center). Text field should say (in 2 lines) “Tap anywhere to create explosions. Destroy ‘em all!”. This text field should become blank as soon as the player taps the screen for the first time.
User prompt
At the begining of the game, create instructions text field in the center. Text field should say “Tap anywhere to create explosions. Destroy ‘em all!”. This text field should become blank as soon as the player taps the screen for the first time.
User prompt
Fix Bug: 'ReferenceError: nextLevelButton is not defined' in this line: 'if (touchesLeft > 0 && obj.target !== nextLevelButton) {' Line Number: 166
User prompt
When nextLevelButton is touched do not count that as a 'touch' that generates projectiles.
User prompt
When level is restarted, destroy levelCompleteText and the nexLevelButton
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 () { var self = Container.call(this); var targetGraphics = self.createAsset('target', 'Target Graphics', .5, .5); self.speed = 7; 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 instructionsText = new Text2('Tap anywhere to create explosions.\nDestroy \'em all!', { size: 70, fill: '#ffffff', align: 'center' }); instructionsText.anchor.set(0.5, 0.5); instructionsText.x = 2048 / 2 - 2048 / 8; instructionsText.y = 2732 / 2 - 2732 / 4; LK.gui.addChild(instructionsText); self.level = 1; self.touchesLeft = 5; self.targetsLeft = 5; var levelText = new Text2('Level: ' + self.level, { size: 70, fill: "#ffffff" }); levelText.anchor.set(0, 0); LK.gui.topLeft.addChild(levelText); var touchesLeftText = new Text2('Touches Left: ' + self.touchesLeft, { size: 70, fill: "#ffffff" }); touchesLeftText.anchor.set(0, 0); touchesLeftText.y = 120; LK.gui.topLeft.addChild(touchesLeftText); var targetsLeftText = new Text2('Targets Left: ' + self.targetsLeft, { size: 70, fill: "#ffffff" }); targetsLeftText.anchor.set(0, 0); targetsLeftText.y = 240; LK.gui.topLeft.addChild(targetsLeftText); var enemyBullets = []; var enemies = []; var targets = []; var touchesLeft = 5; for (var i = 0; i < 5; i++) { var target = new Target(); target.x = Math.random() * 2048; target.y = Math.random() * 2732; 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); }; var fireEnemyBullet = function (enemy) { var bullet = new EnemyBullet(); bullet.x = enemy.x; bullet.y = enemy.y; enemyBullets.push(bullet); self.addChild(bullet); }; LK.on('tick', function () { for (var i = 0; i < targets.length; i++) { targets[i].move(); } if (self.touchesLeft <= 0 && self.children.filter(child => child instanceof Projectile).length === 0 && targets.length > 0) { LK.showGameOver(); } for (var i = 0; i < self.children.length; i++) { 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]; self.addChild(newProjectile); } self.children[i].destroy(); for (var k = 0; k < 30; k++) { var particle = new Particle(); particle.x = targets[j].x; particle.y = targets[j].y; self.addChild(particle); } targets[j].destroy(); self.targetsLeft--; targets.splice(j, 1); targetsLeftText.setText('Targets Left: ' + self.targetsLeft); if (self.targetsLeft <= 0) { self.level++; var levelUpText = new Text2('Level ' + self.level + '!', { size: 70, fill: '#ffffff', align: 'center' }); levelUpText.anchor.set(0.5, 0.5); levelUpText.x = 2048 / 2; levelUpText.y = 2732 / 2; 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); } } } } } }); stage.on('down', function (obj) { if (instructionsText) { instructionsText.setText(''); instructionsText = null; } if (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.addChild(projectile); } if (self.touchesLeft > 0) { self.touchesLeft--; touchesLeftText.setText('Touches Left: ' + self.touchesLeft); } } }); });
===================================================================
--- original.js
+++ change.js
@@ -102,8 +102,11 @@
LK.on('tick', function () {
for (var i = 0; i < targets.length; i++) {
targets[i].move();
}
+ if (self.touchesLeft <= 0 && self.children.filter(child => child instanceof Projectile).length === 0 && targets.length > 0) {
+ LK.showGameOver();
+ }
for (var i = 0; i < self.children.length; i++) {
if (self.children[i] instanceof Projectile || self.children[i] instanceof Particle) {
self.children[i].move();
for (var j = 0; j < targets.length; j++) {
@@ -128,17 +131,8 @@
targets.splice(j, 1);
targetsLeftText.setText('Targets Left: ' + self.targetsLeft);
if (self.targetsLeft <= 0) {
self.level++;
- self.touchesLeft += 5;
- touchesLeftText.setText('Touches Left: ' + self.touchesLeft);
- for (var i = 0; i < 5 + self.level; i++) {
- var newTarget = new Target();
- newTarget.x = Math.random() * 2048;
- newTarget.y = Math.random() * 2732;
- targets.push(newTarget);
- self.addChild(newTarget);
- }
var levelUpText = new Text2('Level ' + self.level + '!', {
size: 70,
fill: '#ffffff',
align: 'center'
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.