User prompt
make stars transparent and make them move faster as they get closer to earth
User prompt
play hit when earth is hit
User prompt
remove music
User prompt
Reduce stars speed in half
Code edit (3 edits merged)
Please save this source code
User prompt
Make stars move in a swirl shapw towards rhe center
User prompt
Earth should be on top of atars
User prompt
Once star reaches the earthe they ahould be destroyed and respawned
User prompt
Spawn 10 times more stars
User prompt
Stars should keep spawing constantly
User prompt
Add stars particles to the game. Stars will move to the center of the screen
User prompt
Play backgeound music on game start
User prompt
Use move sound when shield changes direction
User prompt
When alien is destroyed play destroy sou d
User prompt
pause game after all the aliens from a wave have been destroyed
User prompt
when all aliens from a wave are destroyed, pause the game and show a power up selection screen
User prompt
add a power up structure. power ups will have different impact on the game, like increasing the speed of the shield. there will be a list of powerups and 3 random ones will be displayed after every wave. when power up selection screen is displayed enemies and shiled will not move.
User prompt
incnrease aliens speed by 10% with every new wave
Code edit (2 edits merged)
Please save this source code
User prompt
create a wave structure for aliens spawn.
Code edit (1 edits merged)
Please save this source code
User prompt
remove speed change for aliens and shield
/**** * Classes ****/ var Alien = Container.expand(function () { var self = Container.call(this); var alienGraphics = self.attachAsset('alien', { anchorX: 0.5, anchorY: 0.5, tint: Math.floor(Math.random() * (0xFFFFFF - 0x808080)) + 0x808080 }); self.baseSpeed = 2; self.speedMultiplier = 1; self._move_migrated = function () { var dy = earth.y - self.y; var dx = earth.x - self.x; var angle = Math.atan2(dy, dx); var speed = self.baseSpeed * self.speedMultiplier; self.x += speed * Math.cos(angle); self.y += speed * Math.sin(angle); // Emit engine particles var particleAngle = angle + Math.PI; // Opposite direction of movement if (Math.random() < 0.5) { var particleSpeed = Math.random() * 2 + 2; var particle = ParticlePool.get(self.children[0].tint, particleSpeed, particleAngle); particle.x = self.x + 50 * Math.cos(particleAngle); particle.y = self.y + 50 * Math.sin(particleAngle); game.addChild(particle); } }; }); var Explosion = Container.expand(function (colorTint) { var self = Container.call(this); self.particles = []; for (var i = 0; i < 20; i++) { var particle = self.attachAsset('alien', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.2, scaleY: 0.2, alpha: 0.8, tint: colorTint }); particle.vx = (Math.random() - 0.5) * 10; particle.vy = (Math.random() - 0.5) * 10; self.particles.push(particle); } self._update_migrated = function () { for (var i = self.particles.length - 1; i >= 0; i--) { var p = self.particles[i]; p.x += p.vx; p.y += p.vy; p.alpha -= 0.02; if (p.alpha <= 0) { p.destroy(); self.particles.splice(i, 1); } } }; }); var Particle = Container.expand(function (colorTint, speed, angle) { var self = Container.call(this); var particleGraphics = self.attachAsset('alien', { anchorX: 0.5, anchorY: 0.5, scaleX: 0.3, scaleY: 0.3, alpha: 0.8, tint: colorTint }); self.vx = speed * Math.cos(angle); self.vy = speed * Math.sin(angle); self.lifeSpan = 60; self.reset = function (colorTint, speed, angle) { self.vx = speed * Math.cos(angle); self.vy = speed * Math.sin(angle); self.alpha = 0.8; particleGraphics.tint = colorTint; self.lifeSpan = 60; }; self._update_migrated = function () { self.x += self.vx; self.y += self.vy; self.alpha -= 1 / self.lifeSpan; if (self.alpha <= 0) { self.visible = false; } }; return self; }); // Shield class var Shield = Container.expand(function () { var self = Container.call(this); self.attachAsset('shield', { anchorX: 0.5, anchorY: 0.5 }); self.orbitRadius = 200; self.orbitSpeed = 0.04; self.orbitAngle = 0; self._update_migrated = function () { self.orbitAngle += self.orbitSpeed; self.x = earth.x + self.orbitRadius * Math.cos(self.orbitAngle); self.y = earth.y + self.orbitRadius * Math.sin(self.orbitAngle); var angleToEarth = Math.atan2(earth.y - self.y, earth.x - self.x); self.rotation = angleToEarth + Math.PI / 2; }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Init game with black background }); /**** * Game Code ****/ // Game variables var lives = 3; // Initialize assets used in the game. // Missile class // Alien class // Explosion class // Particle class var ParticlePool = function () { var particles = []; return { get: function get(colorTint, speed, angle) { var particle = particles.find(function (p) { return !p.visible; }); if (!particle) { particle = new Particle(colorTint, speed, angle); particles.push(particle); } else { particle.reset(colorTint, speed, angle); } particle.visible = true; return particle; }, updateAll: function updateAll() { particles.forEach(function (particle) { if (particle.visible) { particle._update_migrated(); } }); } }; }(); var aliens = []; var earth; var scoreTxt; var particles = []; // Array to keep track of particles var waveNumber = 1; var aliensPerWave = 5; var aliensSpawned = 0; var spawnAlienInterval = 60; // Frames until a new alien spawns var nextAlienSpawn = spawnAlienInterval; var waveInterval = 600; // Frames between waves var nextWaveInterval = waveInterval; var alienSpeedMultiplier = 1; // Speed multiplier for aliens // Initialize Earth function initEarth() { earth = game.addChild(LK.getAsset('earth', { anchorX: 0.5, anchorY: 0.5, x: game.width / 2, y: game.height / 2 })); window.shield = game.addChild(new Shield()); window.shield.x = earth.x; window.shield.y = earth.y - window.shield.orbitRadius; } // Initialize score display function initScore() { scoreTxt = new Text2('', { size: 150, fill: "#ffffff" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); livesIcons = []; for (var i = 0; i < lives; i++) { var lifeIcon = LK.getAsset('earth', { anchorX: 1, anchorY: 0, scaleX: 0.5, scaleY: 0.5, x: -i * 60 }); LK.gui.topRight.addChild(lifeIcon); livesIcons.push(lifeIcon); } } // Spawn an alien function spawnAlien() { var alien = new Alien(); alien.baseSpeed = 2 * alienSpeedMultiplier; var side = Math.floor(Math.random() * 4); switch (side) { case 0: // top alien.x = Math.random() * game.width; alien.y = -alien.height; break; case 1: // right alien.x = game.width + alien.width; alien.y = Math.random() * game.height; break; case 2: // bottom alien.x = Math.random() * game.width; alien.y = game.height + alien.height; break; case 3: // left alien.x = -alien.width; alien.y = Math.random() * game.height; break; } aliens.push(alien); game.addChild(alien); } // Check for collisions function checkCollisions() { for (var i = 0; i < aliens.length; i++) { if (window.shield.intersects(aliens[i])) { var alienColor = aliens[i].children[0].tint; var explosion = new Explosion(alienColor); explosion.x = aliens[i].x; explosion.y = aliens[i].y; game.addChild(explosion); aliens[i].destroy(); LK.getSound('Destroy').play(); LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore().toString()); aliens.splice(i, 1); } } } // Game over check function checkGameOver() { for (var i = 0; i < aliens.length; i++) { if (aliens[i].intersects(earth)) { var alienColor = aliens[i].children[0].tint; LK.effects.flashScreen(alienColor, 2000); lives--; livesIcons[lives].destroy(); livesIcons.pop(); if (lives <= 0) { LK.showGameOver(); } else { aliens[i].destroy(); aliens.splice(i, 1); } break; } } } // Touch event to move shield game.on('down', function (x, y, obj) { window.shield.orbitSpeed *= -1; LK.getSound('Move').play(); }); // Game tick event LK.on('tick', function () { // Update explosions and particles game.children.forEach(function (child) { if (child instanceof Explosion) { child._update_migrated(); } }); ParticlePool.updateAll(); // Move aliens for (var j = aliens.length - 1; j >= 0; j--) { aliens[j]._move_migrated(); if (aliens[j].y > game.height + aliens[j].height) { aliens[j].destroy(); aliens.splice(j, 1); } } // Spawn aliens and update spawn interval if (aliensSpawned < aliensPerWave) { nextAlienSpawn--; if (nextAlienSpawn <= 0) { spawnAlien(); aliensSpawned++; nextAlienSpawn = spawnAlienInterval; } } else { nextWaveInterval--; if (nextWaveInterval <= 0) { waveNumber++; aliensPerWave += 2; // Increase the number of aliens per wave aliensSpawned = 0; nextWaveInterval = waveInterval; alienSpeedMultiplier *= 1.1; // Increase alien speed by 10% } } // Shield speed remains constant // Update shield position window.shield._update_migrated(); // Check for collisions and game over checkCollisions(); checkGameOver(); }); // Initialize game elements initEarth(); initScore(); LK.getSound('Background').play();
===================================================================
--- original.js
+++ change.js
@@ -307,5 +307,6 @@
checkGameOver();
});
// Initialize game elements
initEarth();
-initScore();
\ No newline at end of file
+initScore();
+LK.getSound('Background').play();
\ No newline at end of file