User prompt
There can be a maximum of 20 units of EnemyBig
User prompt
Make the powerups slowly move towards the player
User prompt
make EnemyBig 50% slower
User prompt
Whenever EnemyBig is destroyed, spawn two in a random edge of the screen
User prompt
Whenever EnemyBig is destroyed, spawn another one
User prompt
Make EnemyBig sprite twice it's size
User prompt
destroy EnemyBig once it's killed
User prompt
once 7 seconds have passed, spawn a bigger enemy, let's call it "enemy big" that takes 5 shots to be killed
User prompt
Start over the enemy spawn logic. Make them spawn in bigger quantity the longer the game goes
User prompt
make enemy spawn rate increase over time
User prompt
every time a bullet destroys an enemy, add 1 to score
User prompt
Add a score UI
User prompt
For every enemy slain, gain 1 score
User prompt
add a score UI. every basic enemy is worth 1 point
User prompt
double the spawn rate for enemies every 5 seconds
User prompt
Double the amount of enemies every 10 seconds
User prompt
add a 0.1s delay between each projectile shot
User prompt
the player shoots one more projectile every time they pick a power-up
User prompt
power-ups permanently increase fire rate by 100%
User prompt
decrease enemy spawn rate by half
User prompt
lower the base fire rate by 80%
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'destroyed')' in or related to this line: 'if (powerUps[i].destroyed) {' Line Number: 196
User prompt
when a power-up object is picked, destroy it
User prompt
Power-ups increase your fire rate by 50%
User prompt
the power-up spawns in a random spot in the screen, and if you shoot at it, you get the pwoer-up
/**** * 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.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; if (self.intersects(player)) { // Handle player damage playerHealth -= 10; self.destroy(); } }; }); //<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 }); self.x = startX; self.y = startY; self.update = function () { // 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 ****/ // 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 = 100; // 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); } // 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 both bullet and enemy bullets[i].destroy(); bullets.splice(i, 1); enemies[j].destroy(); enemies.splice(j, 1); 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
@@ -39,11 +39,8 @@
if (self.intersects(player)) {
// Handle player damage
playerHealth -= 10;
self.destroy();
- // Increase score by 1 for every enemy slain
- LK.setScore(LK.getScore() + 1);
- scoreTxt.setText(LK.getScore());
}
};
});
//<Assets used in the game will automatically appear here>
@@ -105,21 +102,14 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x000000 //Init game with black background
+ backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
-// Initialize score text
-var scoreTxt = new Text2('0', {
- size: 150,
- fill: 0xFFFFFF
-});
-scoreTxt.anchor.set(0.5, 0);
-LK.gui.top.addChild(scoreTxt);
// Initialize player
var player = game.addChild(new Player());
player.x = 1024;
player.y = 1366;
@@ -128,8 +118,17 @@
var enemies = [];
var powerUps = [];
// Player health
var playerHealth = 100;
+// 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) {
@@ -141,10 +140,9 @@
y: dy / distance
};
};
// Spawn enemies at random edges
- var spawnRate = 120;
- if (LK.ticks % spawnRate === 0) {
+ if (LK.ticks % 120 === 0) {
var edge = Math.floor(Math.random() * 4);
var startX, startY;
if (edge === 0) {
// Top
@@ -165,12 +163,8 @@
}
var enemy = new Enemy(startX, startY);
game.addChild(enemy);
enemies.push(enemy);
- // Double the spawn rate every 5 seconds
- if (LK.ticks % 300 === 0) {
- spawnRate /= 2;
- }
}
// Spawn powerUps at random positions every 5 seconds
if (LK.ticks % 300 === 0) {
var startX = Math.random() * 2048;
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