Code edit (1 edits merged)
Please save this source code
Code edit (1 edits merged)
Please save this source code
User prompt
create a background asset and assign it to the game
User prompt
If an asteroid reaches the bottom of the screen without being destroyed, the game ends immediately, but there should be no explosion effect
User prompt
Also add If an asteroid reaches the bottom of the screen without being destroyed, the game ends.
User prompt
i need smoke or fire effect when asteriod got blast
User prompt
set asteriod Moves slow but takes 3-4 hits to destroy.
User prompt
Set up the spaceship to move left and right with the mouse.
Code edit (1 edits merged)
Please save this source code
User prompt
Asteroid Blaster
Initial prompt
1. Modify the Spaceship Set up the spaceship to move left and right with the mouse. Add a new action: fire bullets when clicking or tapping. 2. Add Bullets Upload a bullet sprite (small laser beam). Set it to move upward when fired. Destroy the bullet when it goes off-screen. 3. Update Asteroids Instead of just avoiding asteroids, set them to break when hit by bullets. Add an explosion effect when destroyed. 4. Set Up Scoring Increase the score each time an asteroid is destroyed. Display the score on-screen. 5. Add Sound Effects Laser sound when firing bullets. Explosion sound when asteroids break.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Asteroid = Container.expand(function () { var self = Container.call(this); var asteroidGraphics = self.attachAsset('asteroid', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; // Slow down the asteroid self.hitPoints = 3; // Asteroid requires 3 hits to be destroyed self.rotationSpeed = Math.random() * 0.05 - 0.025; self.active = true; self.update = function () { if (self.active) { self.y += self.speed; self.rotation += self.rotationSpeed; } }; 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.active = true; self.update = function () { if (self.active) { self.y += self.speed; } }; return self; }); var Explosion = Container.expand(function () { var self = Container.call(this); var explosionGraphics = self.attachAsset('explosion', { anchorX: 0.5, anchorY: 0.5 }); self.initialize = function (x, y) { self.x = x; self.y = y; self.alpha = 1; self.scale.x = 0.5; self.scale.y = 0.5; // Animate explosion tween(self, { alpha: 0, scaleX: 2, scaleY: 2 }, { duration: 500, easing: tween.easeOut, onFinish: function onFinish() { self.destroy(); } }); }; return self; }); var Spaceship = Container.expand(function () { var self = Container.call(this); var spaceshipGraphics = self.attachAsset('spaceship', { anchorX: 0.5, anchorY: 0.5 }); self.width = spaceshipGraphics.width; self.height = spaceshipGraphics.height; self.isHit = false; self.flash = function () { LK.effects.flashObject(self, 0xff0000, 300); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Game variables var spaceship; var bullets = []; var asteroids = []; var gameWidth = 2048; var gameHeight = 2732; var score = 0; var level = 1; var asteroidSpawnRate = 60; var maxAsteroids = 5; var bulletCooldown = 0; var gameStarted = false; // Setup game elements function setupGame() { // Reset game state score = 0; level = 1; asteroidSpawnRate = 60; maxAsteroids = 5; // Clear existing elements for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].destroy(); } bullets = []; for (var i = asteroids.length - 1; i >= 0; i--) { asteroids[i].destroy(); } asteroids = []; if (spaceship) { spaceship.destroy(); } // Create player spaceship spaceship = new Spaceship(); spaceship.x = gameWidth / 2; spaceship.y = gameHeight - 150; game.addChild(spaceship); // Set score LK.setScore(0); scoreTxt.setText("SCORE: 0"); // Start background music LK.playMusic('gameMusic', { fade: { start: 0, end: 0.4, duration: 1000 } }); gameStarted = true; } // UI setup var scoreTxt = new Text2("SCORE: 0", { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.y = 50; // Create title text initially var titleTxt = new Text2("ASTEROID BLASTER", { size: 120, fill: 0xFFFFFF }); titleTxt.anchor.set(0.5, 0.5); LK.gui.center.addChild(titleTxt); var instructionTxt = new Text2("TAP TO START\nMove ship: Touch/Drag\nShoot: Tap screen", { size: 60, fill: 0xCCCCCC }); instructionTxt.anchor.set(0.5, 0.5); instructionTxt.y = 200; LK.gui.center.addChild(instructionTxt); // Create a bullet function createBullet() { if (bulletCooldown <= 0) { var bullet = new Bullet(); bullet.x = spaceship.x; bullet.y = spaceship.y - spaceship.height / 2; bullets.push(bullet); game.addChild(bullet); // Play sound LK.getSound('shoot').play(); // Set cooldown bulletCooldown = 10; } } // Create an asteroid function createAsteroid() { var asteroid = new Asteroid(); // Random position along top of screen asteroid.x = Math.random() * gameWidth; asteroid.y = -100; // Random size variation var scaleFactor = 0.8 + Math.random() * 0.8; asteroid.scale.x = scaleFactor; asteroid.scale.y = scaleFactor; // Speed increases with level asteroid.speed = 5 + level * 0.5 + Math.random() * 2; asteroids.push(asteroid); game.addChild(asteroid); } // Create explosion effect function createExplosion(x, y) { var explosion = new Explosion(); explosion.initialize(x, y); game.addChild(explosion); // Add smoke effect var smoke = new Explosion(); smoke.initialize(x, y); smoke.alpha = 0.5; smoke.scale.x = 1.5; smoke.scale.y = 1.5; game.addChild(smoke); // Play explosion sound LK.getSound('explosion').play(); } // Game touch/mouse handlers var isDragging = false; game.down = function (x, y, obj) { if (!gameStarted) { // Remove title screen titleTxt.destroy(); instructionTxt.destroy(); // Start the game setupGame(); return; } // If clicking on spaceship, start dragging if (spaceship.getBounds().contains(x, y)) { isDragging = true; } else { // Fire bullet createBullet(); } }; game.up = function (x, y, obj) { isDragging = false; }; game.move = function (x, y, obj) { if (gameStarted) { // Move spaceship, but keep within screen bounds spaceship.x = Math.max(spaceship.width / 2, Math.min(gameWidth - spaceship.width / 2, x)); } }; // Game main update loop game.update = function () { if (!gameStarted) { return; } // Decrease bullet cooldown if (bulletCooldown > 0) { bulletCooldown--; } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; // Remove bullets that go off screen if (bullet.y < -50) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check for collisions with asteroids for (var j = asteroids.length - 1; j >= 0; j--) { var asteroid = asteroids[j]; if (bullet.active && asteroid.active && bullet.intersects(asteroid)) { // Reduce asteroid hit points asteroid.hitPoints -= 1; // Check if asteroid is destroyed if (asteroid.hitPoints <= 0) { // Create explosion createExplosion(asteroid.x, asteroid.y); // Update score score += 10; LK.setScore(score); scoreTxt.setText("SCORE: " + score); // Level progression if (score >= level * 200) { level++; maxAsteroids += 2; asteroidSpawnRate = Math.max(30, asteroidSpawnRate - 5); } // Remove asteroid asteroid.active = false; asteroid.destroy(); asteroids.splice(j, 1); } // Remove bullet bullet.active = false; bullet.destroy(); bullets.splice(i, 1); break; } } } // Update asteroids for (var i = asteroids.length - 1; i >= 0; i--) { var asteroid = asteroids[i]; // End game if an asteroid reaches the bottom of the screen if (asteroid.y > gameHeight) { // Remove asteroid asteroid.active = false; asteroid.destroy(); asteroids.splice(i, 1); // Game over LK.showGameOver(); gameStarted = false; continue; } // Check for collision with spaceship if (asteroid.active && spaceship.intersects(asteroid)) { // Create explosion createExplosion(asteroid.x, asteroid.y); // Flash spaceship spaceship.flash(); // Play hit sound LK.getSound('hit').play(); // Remove asteroid asteroid.active = false; asteroid.destroy(); asteroids.splice(i, 1); // Game over if hit LK.showGameOver(); gameStarted = false; } } // Spawn new asteroids if (LK.ticks % asteroidSpawnRate === 0 && asteroids.length < maxAsteroids) { createAsteroid(); } };
===================================================================
--- original.js
+++ change.js
@@ -290,10 +290,8 @@
for (var i = asteroids.length - 1; i >= 0; i--) {
var asteroid = asteroids[i];
// End game if an asteroid reaches the bottom of the screen
if (asteroid.y > gameHeight) {
- // Create explosion
- createExplosion(asteroid.x, asteroid.y);
// Remove asteroid
asteroid.active = false;
asteroid.destroy();
asteroids.splice(i, 1);
Plasma Bolt โ A glowing energy ball with a sci-fi effect.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
๐ชจ Large Asteroid โ Moves slow but takes 3-4 hits to destroy.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
๐ฅ Shockwave Effect โ A ring-like wave when something explodes.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows