User prompt
Change enmyboss spawn time from 8 seconds to 10 seconds
User prompt
make enemyboss spawn at 8 seconds rather than 5 seconds
User prompt
When EnemyBoss hits you, you lose the game
User prompt
When EnemyBoss is destroyed, you win the game
User prompt
Now the EnemyBig not being hit by any bullets after EnemyBoss dies. Can you fix it?
User prompt
Enemies are still spawning
User prompt
Can you fix it?
User prompt
Stop all EnemyBig trigger events after EnemyBoss is destroyed
User prompt
EnemyBig stop spawning after EnemyBoss is destroyed
User prompt
After the count of 5 seconds, When there's no more enemies alive, you win the game
User prompt
delay end of match condition in 5 seconds
User prompt
When there's no more enemies alive, you win the game
User prompt
When EnemyBoss is destroyed, stop spawning enemies
User prompt
There can be a maximum of 20 EnemyBig alive at once
User prompt
Whenever EnemyBig is destroyed, spawn 2 EnemyBig at a random point outside of the screen. Then, increase their speed by 10%
Code edit (1 edits merged)
Please save this source code
User prompt
Display the player's health as hearts
User prompt
Can you fix it?
/**** * Classes ****/ // Bullet class var Bullet = Container.expand(function (startX, startY, direction) { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.x = startX; self.y = startY; self.speed = 10; self.direction = direction; self.update = function () { self.x += self.direction.x * self.speed; self.y += self.direction.y * self.speed; if (self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) { self.destroy(); } }; }); // Enemy class var Enemy = Container.expand(function (startX, startY) { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.lastIntersecting = false; self.x = startX; self.y = startY; self.speed = 2; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; enemyGraphics.scaleX = self.x > 1024 ? -1 : 1; if (self.intersects(player) && !self.lastIntersecting) { // Handle player damage playerHealth -= 1; if (playerHealth >= 0) { hearts[playerHealth].destroy(); // Remove a heart when player takes damage hearts.pop(); } if (playerHealth <= 0) { LK.showGameOver(); // End the game when player health reaches zero } self.destroy(); } self.lastIntersecting = self.intersects(player); }; }); // EnemyBig class var EnemyBig = Container.expand(function (startX, startY) { var self = Container.call(this); var enemyBigGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.lastIntersecting = false; self.x = startX; self.y = startY; self.speed = 0.5; self.health = 5; // Takes 5 shots to be killed self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; enemyBigGraphics.scaleX = self.x > 1024 ? -2 : 2; if (self.intersects(player) && !self.lastIntersecting) { // Handle player damage playerHealth -= 1; if (playerHealth >= 0) { hearts[playerHealth].destroy(); // Remove a heart when player takes damage hearts.pop(); } if (playerHealth <= 0) { LK.showGameOver(); // End the game when player health reaches zero } self.destroy(); } self.lastIntersecting = self.intersects(player); }; self.takeDamage = function () { self.health -= 1; if (self.health <= 0) { self.destroy(); for (var i = 0; i < 2; i++) { var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { startX = Math.random() * 2048; startY = -100; // Above the screen } else if (edge === 1) { startX = 2148; // Right of the screen startY = Math.random() * 2732; } else if (edge === 2) { startX = Math.random() * 2048; startY = 2832; // Below the screen } else { startX = -100; // Left of the screen startY = Math.random() * 2732; } var newEnemyBig = new EnemyBig(startX, startY); newEnemyBig.speed *= 1.1; // Increase speed by 10% game.addChild(newEnemyBig); enemies.push(newEnemyBig); } } else { // Blink effect enemyBigGraphics.alpha = 0.5; LK.setTimeout(function () { enemyBigGraphics.alpha = 1; }, 100); } }; }); // EnemyBoss class var EnemyBoss = Container.expand(function (startX, startY) { var self = Container.call(this); var enemyBossGraphics = self.attachAsset('enemyBoss', { anchorX: 0.5, anchorY: 0.5, scaleX: 1, scaleY: 1 }); self.lastIntersecting = false; self.x = startX; self.y = startY; self.speed = 0.175; self.health = 30; // Takes 30 shots to be killed self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; enemyBossGraphics.scaleX = self.x > 1024 ? -2 : 2; if (self.intersects(player) && !self.lastIntersecting) { // Handle player damage playerHealth -= 1; if (playerHealth >= 0) { hearts[playerHealth].destroy(); // Remove a heart when player takes damage hearts.pop(); } if (playerHealth <= 0) { LK.showGameOver(); // End the game when player health reaches zero } self.destroy(); } self.lastIntersecting = self.intersects(player); }; self.takeDamage = function () { self.health -= 1; if (self.health <= 0) { self.destroy(); } else { // Blink effect enemyBossGraphics.alpha = 0.5; LK.setTimeout(function () { enemyBossGraphics.alpha = 1; }, 100); } }; }); //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.shootDirection = { x: 0, y: 0 }; self.projectiles = 1; self.update = function () { // Player shooting logic if (LK.ticks % 75 === 0) { for (var i = 0; i < self.projectiles; i++) { LK.setTimeout(function () { var bullet = new Bullet(self.x, self.y, self.shootDirection); game.addChild(bullet); bullets.push(bullet); }, i * 100); } } }; }); // PowerUp class var PowerUp = Container.expand(function (startX, startY) { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.x = startX; self.y = startY; self.update = function () { // Move power-up towards the player var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * 0.25; // Adjust speed as needed self.y += dy / distance * 0.25; // Adjust speed as needed // Check for collision with bullets for (var i = bullets.length - 1; i >= 0; i--) { if (bullets[i].intersects(self)) { // Destroy both bullet and powerUp bullets[i].destroy(); bullets.splice(i, 1); self.destroy(); // Increase player's fire rate by 100% player.shootInterval *= 0.5; // Increase the number of projectiles fired by the player player.projectiles += 1; // Destroy power-up object when picked powerUps.splice(powerUps.indexOf(self), 1); break; } } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Add background to the game var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5 }); background.x = 1024; background.y = 1366; game.addChild(background); // Initialize player var player = game.addChild(new Player()); player.x = 1024; player.y = 1366; // Initialize bullets, enemies and powerUps arrays var bullets = []; var enemies = []; var powerUps = []; // Player health var playerHealth = 5; // Display player's health as hearts var hearts = []; for (var i = 0; i < playerHealth; i++) { var heart = LK.getAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); heart.x = -300 + i * 150; // Position hearts with some spacing heart.y = 200; // Position hearts at the top of the screen LK.gui.top.addChild(heart); hearts.push(heart); } // Initialize score var score = 0; // Create score text var scoreText = new Text2('Score: 0', { size: 50, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Game update function game.update = function () { // Update player direction based on pointer game.move = function (x, y, obj) { var dx = x - player.x; var dy = y - player.y; var distance = Math.sqrt(dx * dx + dy * dy); player.shootDirection = { x: dx / distance, y: dy / distance }; }; // Spawn enemies at random edges if (LK.ticks % 120 === 0) { var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { // Top startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { // Right startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { // Bottom startX = Math.random() * 2048; startY = 2732; } else { // Left startX = 0; startY = Math.random() * 2732; } var enemy = new Enemy(startX, startY); game.addChild(enemy); enemies.push(enemy); } // Spawn powerUps at random positions every 5 seconds if (LK.ticks % 300 === 0) { var startX = Math.random() * 2048; var startY = Math.random() * 2732; var powerUp = new PowerUp(startX, startY); game.addChild(powerUp); powerUps.push(powerUp); } // Spawn EnemyBig after 7 seconds if there are less than 20 if (LK.ticks === 420 && enemies.filter(function (e) { return e instanceof EnemyBig; }).length < 20) { // 7 seconds * 60 FPS = 420 ticks var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { // Top startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { // Right startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { // Bottom startX = Math.random() * 2048; startY = 2732; } else { // Left startX = 0; startY = Math.random() * 2732; } var enemyBig = new EnemyBig(startX, startY); game.addChild(enemyBig); enemies.push(enemyBig); } // Spawn EnemyBoss after 5 seconds if (LK.ticks === 300) { // 5 seconds * 60 FPS = 300 ticks var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { // Top startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { // Right startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { // Bottom startX = Math.random() * 2048; startY = 2732; } else { // Left startX = 0; startY = Math.random() * 2732; } var enemyBoss = new EnemyBoss(startX, startY); game.addChild(enemyBoss); enemies.push(enemyBoss); } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); // Check for collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { if (bullets[i].intersects(enemies[j])) { // Destroy bullet bullets[i].destroy(); bullets.splice(i, 1); // Check if enemy is EnemyBig or EnemyBoss if (enemies[j] instanceof EnemyBig || enemies[j] instanceof EnemyBoss) { enemies[j].takeDamage(); if (enemies[j].health <= 0) { enemies[j].destroy(); enemies.splice(j, 1); // Add 1 to score every time a bullet destroys an enemy score += 1; scoreText.setText('Score: ' + score); // Spawn two new EnemyBig at random edges if total is less than 20 if (enemies[j] instanceof EnemyBig) { for (var k = 0; k < 2 && enemies.filter(function (e) { return e instanceof EnemyBig; }).length < 20; k++) { var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { startX = Math.random() * 2048; startY = 2732; } else { startX = 0; startY = Math.random() * 2732; } var newEnemyBig = new EnemyBig(startX, startY); game.addChild(newEnemyBig); enemies.push(newEnemyBig); } } } } else { // Destroy enemy enemies[j].destroy(); enemies.splice(j, 1); // Add 1 to score every time a bullet destroys an enemy score += 1; scoreText.setText('Score: ' + score); } break; } } if (bullets[i] && bullets[i].destroyed) { bullets.splice(i, 1); } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (enemies[j].destroyed) { enemies.splice(j, 1); } } // Update powerUps for (var i = powerUps.length - 1; i >= 0; i--) { powerUps[i].update(); if (powerUps[i] && powerUps[i].destroyed) { powerUps.splice(i, 1); } } };
===================================================================
--- original.js
+++ change.js
@@ -91,8 +91,29 @@
self.takeDamage = function () {
self.health -= 1;
if (self.health <= 0) {
self.destroy();
+ for (var i = 0; i < 2; i++) {
+ var edge = Math.floor(Math.random() * 4);
+ var startX, startY;
+ if (edge === 0) {
+ startX = Math.random() * 2048;
+ startY = -100; // Above the screen
+ } else if (edge === 1) {
+ startX = 2148; // Right of the screen
+ startY = Math.random() * 2732;
+ } else if (edge === 2) {
+ startX = Math.random() * 2048;
+ startY = 2832; // Below the screen
+ } else {
+ startX = -100; // Left of the screen
+ startY = Math.random() * 2732;
+ }
+ var newEnemyBig = new EnemyBig(startX, startY);
+ newEnemyBig.speed *= 1.1; // Increase speed by 10%
+ game.addChild(newEnemyBig);
+ enemies.push(newEnemyBig);
+ }
} else {
// Blink effect
enemyBigGraphics.alpha = 0.5;
LK.setTimeout(function () {
@@ -247,10 +268,10 @@
var heart = LK.getAsset('heart', {
anchorX: 0.5,
anchorY: 0.5
});
- heart.x = 150 + i * 60; // Position hearts with some spacing
- heart.y = 150; // Position hearts at the top of the screen
+ heart.x = -300 + i * 150; // Position hearts with some spacing
+ heart.y = 200; // Position hearts at the top of the screen
LK.gui.top.addChild(heart);
hearts.push(heart);
}
// Initialize score
fire with eyes and mouth. Single Game Texture. In-Game asset. 2d. High contrast. No shadows
A cartoon firefighter. Single Game Texture. In-Game asset. 2d. High contrast. No shadows
a blue hydrant round icon Single Game Texture. In-Game asset. 2d. High contrast. No shadows
Heart. Single Game Texture. In-Game asset. 2d. High contrast. No shadows