User prompt
set bg color to 2f2033
User prompt
set bg color to 58282a
User prompt
When setting score text also update LK.setScore
Code edit (3 edits merged)
Please save this source code
User prompt
make targets move twice as fast
User prompt
make bullets accelerate twice as fast
User prompt
Flash screen white for 300ms when game over
User prompt
use LK.ticks in bullet
User prompt
in bullet tick, only spawn a new particle every second tick
User prompt
Make particles have random rotation
User prompt
set particleGraphics blend mode to 1
User prompt
Particle should have random momentum
User prompt
when adding a particle add use addChildAt with index 1
User prompt
at the bottom of game tick, tick particles
User prompt
in game tick, collect the particles returned by bullet.tick into a particles array
User prompt
In bullet tick return the particle
User prompt
Make bullets leave a trail of particels
User prompt
in bullet before bulletGraphics add a background graphics element
User prompt
in bullet tick, subtract rotationSpeed rather than adding it
User prompt
when scaling background in tick /50 instead of /20
Code edit (1 edits merged)
Please save this source code
User prompt
Move background 5 px to the right
/**** * Classes ****/ var Particle = Container.expand(function () { var self = Container.call(this); self.dx = (Math.random() * 2 - 1) * 2; self.dy = (Math.random() * 2 - 1) * 2; var particleGraphics = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5 }); particleGraphics.blendMode = 1; self.rotation = Math.random() * Math.PI * 2; self.lifeSpan = 60; self.tick = function () { self.alpha -= 1 / self.lifeSpan; self.scale.x -= 0.01; self.scale.y -= 0.01; self.x += self.dx; self.y += self.dy; if (self.alpha <= 0) { self.destroy(); } }; return self; }); var ShotIndicator = Container.expand(function (maxShots) { var self = Container.call(this); self.maxShots = maxShots; self.currentShots = maxShots; self.indicators = []; for (var i = 0; i < self.maxShots; i++) { var indicator = self.attachAsset('shotIndicator', { anchorY: 0.5 }); indicator.x = i * indicator.width; self.indicators.push(indicator); self.addChild(indicator); } self.updateIndicators = function () { for (var i = 0; i < self.indicators.length; i++) { self.indicators[i].alpha = i < self.currentShots ? 1 : 0.3; } }; self.useShot = function () { if (self.currentShots > 0) { self.currentShots--; self.updateIndicators(); } }; self.resetShots = function () { self.currentShots = Math.min(self.currentShots + 2, self.maxShots); self.updateIndicators(); }; self.updateIndicators(); return self; }); var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.tick = function () { if (!self.initialized) { self.rotationSpeed = -Math.PI / 60; self.rotationTicks = 30; self.initialized = true; } if (self.rotationTicks > 0) { bulletGraphics.rotation -= self.rotationSpeed; self.rotationTicks--; } self.speed += 0.2; self.x += Math.cos(self.rotation) * self.speed; self.y += Math.sin(self.rotation) * self.speed; if (LK.ticks % 2 === 0) { var particle = new Particle(); particle.x = self.x; particle.y = self.y; self.parent.addChildAt(particle, 1); return particle; } return null; }; }); var HexagonElement = Container.expand(function (delay) { var self = Container.call(this); self.fadeOut = function () { var fadeOutInterval = LK.setInterval(function () { self.alpha -= 0.05; self.scale.x += 0.05; self.scale.y += 0.05; if (self.alpha <= 0) { LK.clearInterval(fadeOutInterval); self.destroy(); } }, 10); }; var backgroundElement = self.attachAsset('hexBackground', { anchorX: 0.5, anchorY: 0.5 }); backgroundElement.alpha = 0; backgroundElement.blendMode = 1; backgroundElement.scale.x = 1; backgroundElement.scale.y = 1; var elementGraphics = self.attachAsset('element', { anchorX: 0.5, anchorY: 0.5 }); elementGraphics.alpha = 0; elementGraphics.scale.x = 0; elementGraphics.scale.y = 0; self.fadeInDelay = delay * 5; var directions = [{ x: 1, y: 0 }, { x: -1, y: 0 }, { x: 0.5, y: Math.sqrt(3) / 2 }, { x: -0.5, y: Math.sqrt(3) / 2 }, { x: 0.5, y: -Math.sqrt(3) / 2 }, { x: -0.5, y: -Math.sqrt(3) / 2 }]; var chosenDirection = directions[Math.floor(Math.random() * directions.length)]; self.speed = 4; self.tick = function () { if (self.fadeInDelay > 0) { self.fadeInDelay--; } else { if (elementGraphics.alpha < 1) { elementGraphics.alpha += 0.05; elementGraphics.scale.x += 0.05; elementGraphics.scale.y += 0.05; } else if (elementGraphics.alpha > 1) { elementGraphics.alpha = 1; } if (backgroundElement.alpha < 1) { backgroundElement.alpha += 0.1; } else if (backgroundElement.alpha > 1) { backgroundElement.alpha = 1; } } self.x = (self.x + chosenDirection.x * self.speed + 2048) % 2048; self.y = (self.y + chosenDirection.y * self.speed + 2732) % 2732; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2f2033 }); /**** * Game Code ****/ var backgroundElement = game.attachAsset('backgroundElement', { anchorX: 0.5, anchorY: 0.5 }); var targetScale = 1.8; backgroundElement.x = 2048 / 2 - 45; backgroundElement.y = 2732 / 2; backgroundElement.scale.x = targetScale; backgroundElement.scale.y = targetScale; game.addChild(backgroundElement); var score = 0; var wave = 0; var scoreTxt = new Text2(score.toString(), { size: 150, fill: "#ffffff", weight: 500, dropShadow: true, dropShadowColor: '#000000', dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); scoreTxt.anchor.set(0.5, 0); LK.gui.topCenter.addChild(scoreTxt); game.updateScore = function (points) { score += points; LK.setScore(score); scoreTxt.setText(score.toString()); }; game.updateScore(0); var bullets = []; var particles = []; var elements = []; var shotIndicator = new ShotIndicator(5); shotIndicator.x = 2048 - shotIndicator.width * shotIndicator.maxShots - 20 - 30 - 10; shotIndicator.y = 40 + 10 + 20; LK.gui.topRight.addChild(shotIndicator); game.shotIndicator = shotIndicator; game.shotIndicator.resetShots(); function startNextLevel() { bullets.forEach(function (bullet) { bullet.destroy(); }); bullets = []; elements.forEach(function (element) { element.destroy(); }); elements = []; game.shotIndicator.resetShots(); var hexagonsThisWave = Math.min(wave + 2, 8); for (var i = 0; i < hexagonsThisWave; i++) { var scaleModifier = Math.max(0.3, 1 - wave * 0.05); var hexagonElement = new HexagonElement(i); hexagonElement.x = Math.random() * 2048; hexagonElement.y = Math.random() * 2732; hexagonElement.scale.x = scaleModifier; hexagonElement.scale.y = scaleModifier; elements.push(hexagonElement); game.addChild(hexagonElement); } } game.startNextLevel = function () { wave++; targetScale = Math.max(1, targetScale - 0.05); var waveText = new Text2('Wave ' + wave, { size: 300, fill: '#ffffff', weight: 100, align: 'center', dropShadow: true, dropShadowColor: '#000000', dropShadowBlur: 4, dropShadowAngle: Math.PI / 6, dropShadowDistance: 6 }); waveText.anchor.set(0.5, 0.5); LK.gui.center.addChild(waveText); LK.setTimeout(function () { waveText.destroy(); }, 2000); startNextLevel.call(this); }; game.startNextLevel(); game.fireBulletsHexagon = function (position) { var directions = [{ x: 1, y: 0 }, { x: -1, y: 0 }, { x: 0.5, y: Math.sqrt(3) / 2 }, { x: -0.5, y: Math.sqrt(3) / 2 }, { x: 0.5, y: -Math.sqrt(3) / 2 }, { x: -0.5, y: -Math.sqrt(3) / 2 }]; directions.forEach(function (direction, index) { var bullet = new Bullet(); bullet.x = position.x; bullet.y = position.y; bullet.rotation = Math.atan2(direction.y, direction.x); bullets.push(bullet); game.addChild(bullet); }); }; game.on('down', function (obj) { if (game.shotIndicator.currentShots <= 0) { return; } game.shotIndicator.useShot(); var event = obj.event; var pos = event.getLocalPosition(game); game.fireBulletsHexagon(pos); }); LK.on('tick', function () { for (var i = bullets.length - 1; i >= 0; i--) { var particle = bullets[i].tick(); if (particle) { particles.push(particle); } for (var j = elements.length - 1; j >= 0; j--) { var dx = bullets[i].x - elements[j].x; var dy = bullets[i].y - elements[j].y; var fixedIntersectionDistance = elements[j].width / 2; if (Math.abs(dx) < fixedIntersectionDistance && Math.abs(dy) < fixedIntersectionDistance) { var pos = { x: elements[j].x, y: elements[j].y }; elements[j].fadeOut(); game.updateScore(1); elements.splice(j, 1); game.fireBulletsHexagon(pos); break; } } if (bullets[i].x < 0 || bullets[i].x > 2048 || bullets[i].y < 0 || bullets[i].y > 2732) { bullets[i].destroy(); bullets.splice(i, 1); } } for (var j = 0; j < elements.length; j++) { elements[j].tick(); } backgroundElement.scale.x += (targetScale - backgroundElement.scale.x) / 20; backgroundElement.scale.y += (targetScale - backgroundElement.scale.y) / 20; for (var k = particles.length - 1; k >= 0; k--) { particles[k].tick(); if (particles[k].alpha <= 0) { particles.splice(k, 1); } } if (elements.length === 0 && bullets.length === 0) { game.startNextLevel(); } else if (game.shotIndicator.currentShots <= 0 && bullets.length === 0) { LK.effects.flashScreen(0xffffff, 300); LK.showGameOver(); } });
===================================================================
--- original.js
+++ change.js
@@ -160,9 +160,9 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x58282a
+ backgroundColor: 0x2f2033
});
/****
* Game Code
Hexagon target Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Single White Hexagon, soft edges, simple, vector. Round corners. All white. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Amazing bright hexagon space background.
Triangle plasma bullet. Glowing. Pointing down. Dark outline. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
White triangle Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Single Bright light particle, white. Simple, vector. Triangle. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.