User prompt
Add maximum fire rate upgrade to 4
User prompt
Adjust the distance between bullets when upgrading bullet count in the MultiBulletUpgradeButton class
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'y')' in this line: 'multiBulletUpgradeButton.y = fireRateUpgradeButton.y + fireRateUpgradeButton.height + 20;' Line Number: 243
User prompt
Delete button in left upper corner
User prompt
Make distance for additional buller upgrade
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'y')' in this line: 'multiBulletUpgradeButton.y = fireRateUpgradeButton.y + fireRateUpgradeButton.height + 20;' Line Number: 241
User prompt
Add multi bullet upgrade button that increases bullet shoot from hero by 1 each upgrade, it spends 5 diamonds
User prompt
When enemy killed by bomb button it increase score
User prompt
Magnet button cooldown for 3 second
User prompt
Move magnet button under bomb button
User prompt
Add magnet button that picks up all coins and diamonds in screen
User prompt
Bomb button cooldown for 5 second
User prompt
Frenzy mode lasts 10 seconds only
User prompt
Frenzy mode has 30second cooldown
User prompt
When enemy died of bomb it should drop either coins or diamonds
User prompt
Add bomb in map when bomb button press then it despawn after 3 sec
User prompt
Bomb lifetime for 3 second
User prompt
Fix Bug: 'Uncaught TypeError: Cannot read properties of undefined (reading 'x')' in this line: 'bombButton.x = frenzyButton.x;' Line Number: 155
User prompt
Add bomb button under frenzy button that shoot bomb and kill all enemy
User prompt
Frenzy mode increase fire rate and enemy spaen rste
User prompt
Frenzy mode isnt working
User prompt
Display how many diamond u got
User prompt
Add another currency diamond which is rarer to drop than coins
User prompt
Fix Bug: 'ReferenceError: coins is not defined' in this line: 'for (var c = coins.length - 1; c >= 0; c--) {' Line Number: 170
User prompt
Make diamond currency
/**** * Classes ****/ // Hero class var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.createAsset('hero', 'Hero character', 0.5, 0.5); self.shoot = function () { // Shooting logic will be implemented in the game logic section }; self.update = function () { // Update logic for the hero, if needed }; }); // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('bullet', 'Hero Bullet', 0.5, 0.5); self.speed = -10; self.move = function () { self.y += self.speed; }; }); // Coin class var Coin = Container.expand(function () { var self = Container.call(this); var coinGraphics = self.createAsset('coin', 'Coin', 0.5, 0.5); self.value = 1; self.speed = 5; self.move = function () { self.y += self.speed; }; self.collect = function () { // Collection logic will be implemented in the game logic section }; }); // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy', 'Enemy character', 0.5, 0.5); self.speed = 2; self.move = function () { self.y += self.speed; }; }); // CoinsDisplay class var CoinsDisplay = Container.expand(function () { var self = Container.call(this); var coinsText = new Text2('Coins: 0', { size: 100, fill: "#ffd700" }); coinsText.anchor.set(0.5, 0); self.addChild(coinsText); self.updateCoins = function (totalCoins) { coinsText.setText('Coins: ' + totalCoins.toString()); }; }); //{5.1} // DiamondsDisplay class var DiamondsDisplay = Container.expand(function () { var self = Container.call(this); var diamondsText = new Text2('Diamonds: 0', { size: 100, fill: "#b9f2ff" }); diamondsText.anchor.set(0.5, 0); self.addChild(diamondsText); self.updateDiamonds = function (totalDiamonds) { diamondsText.setText('Diamonds: ' + totalDiamonds.toString()); }; }); // FireRateUpgradeButton class var FireRateUpgradeButton = Container.expand(function () { var self = Container.call(this); var upgradeButtonGraphics = self.createAsset('fireRateUpgradeButton', 'Fire Rate Upgrade Button', 0.5, 0.5); self.cost = 5; self.on('down', function () { if (totalCoins >= self.cost) { fireRate = Math.max(5, fireRate - 5); totalCoins -= self.cost; coinsDisplay.updateCoins(totalCoins); } }); }); var FrenzyButton = Container.expand(function () { var self = Container.call(this); var frenzyButtonGraphics = self.createAsset('frenzyButton', 'Frenzy Mode Button', 0.5, 0.5); self.isFrenzyActive = false; self.toggleFrenzyMode = function () { if (!self.isFrenzyActive && !self.cooldownActive) { self.isFrenzyActive = true; fireRate = Math.max(5, fireRate - 10); LK.setTimeout(function () { self.isFrenzyActive = false; fireRate = 30; // Reset fire rate to default when frenzy mode ends self.cooldownActive = true; LK.setTimeout(function () { self.cooldownActive = false; }, 30000); // 30-second cooldown }, 10000); // Frenzy mode lasts only 10 seconds } }; self.on('down', function () { self.toggleFrenzyMode(); }); }); // Diamond class var Diamond = Container.expand(function () { var self = Container.call(this); var diamondGraphics = self.createAsset('diamond', 'Diamond', 0.5, 0.5); self.value = 5; self.speed = 5; self.move = function () { self.y += self.speed; }; self.collect = function () { // Collection logic will be implemented in the game logic section }; }); // Bomb class var Bomb = Container.expand(function () { var self = Container.call(this); var bombGraphics = self.createAsset('bomb', 'Bomb', 0.5, 0.5); self.explode = function () { enemies.forEach(function (enemy) { // Determine whether to drop a coin or a diamond var dropChance = Math.random(); if (dropChance < 0.2) { // 20% chance to drop a diamond var newDiamond = new Diamond(); newDiamond.x = enemy.x; newDiamond.y = enemy.y; diamonds.push(newDiamond); game.addChild(newDiamond); } else { // 80% chance to drop a coin var newCoin = new Coin(); newCoin.x = enemy.x; newCoin.y = enemy.y; coins.push(newCoin); game.addChild(newCoin); } // Increase score for each enemy destroyed by the bomb score++; scoreTxt.setText(score.toString()); enemy.destroy(); }); enemies = []; // Clear the enemies array self.destroy(); // Destroy the bomb immediately after explosion }; // Set a timeout to remove the bomb from the game after 3 seconds LK.setTimeout(function () { if (self.parent) { self.parent.removeChild(self); } }, 3000); }); // BombButton class var BombButton = Container.expand(function () { var self = Container.call(this); var bombButtonGraphics = self.createAsset('bombButton', 'Bomb Button', 0.5, 0.5); self.cooldown = false; self.on('down', function () { if (!self.cooldown) { self.cooldown = true; var bomb = new Bomb(); bomb.x = 2048 / 2; bomb.y = 2732 / 2; game.addChild(bomb); bomb.explode(); LK.setTimeout(function () { self.cooldown = false; }, 5000); } }); }); // MagnetButton class var MagnetButton = Container.expand(function () { var self = Container.call(this); var magnetButtonGraphics = self.createAsset('magnetButton', 'Magnet Button', 0.5, 0.5); self.cooldown = false; self.on('down', function () { if (!self.cooldown) { self.cooldown = true; coins.forEach(function (coin) { // Increment total coins collected totalCoins += coin.value; // Update the total coins display coinsDisplay.updateCoins(totalCoins); coin.destroy(); }); coins = []; // Clear the coins array diamonds.forEach(function (diamond) { // Increment total diamonds collected totalDiamonds += 1; // Update the total diamonds display diamondsDisplay.updateDiamonds(totalDiamonds); // Increment total coins collected by diamond value totalCoins += diamond.value; // Update the total coins display coinsDisplay.updateCoins(totalCoins); diamond.destroy(); }); diamonds = []; // Clear the diamonds array LK.setTimeout(function () { self.cooldown = false; }, 3000); // 3-second cooldown } }); }); /**** * Initialize Game ****/ // Create frenzy button instance var game = new LK.Game({ backgroundColor: 0xFFFFFF //Init game with white background }); /**** * Game Code ****/ var frenzyButton = game.addChild(new FrenzyButton()); frenzyButton.x = 2048 - frenzyButton.width / 2 - 100; frenzyButton.y = 2732 / 2; var bombButton = game.addChild(new BombButton()); bombButton.x = frenzyButton.x; bombButton.y = frenzyButton.y + frenzyButton.height + 20; var fireRateUpgradeButton = game.addChild(new FireRateUpgradeButton()); fireRateUpgradeButton.x = 100; fireRateUpgradeButton.y = 2732 / 2; var frenzyButton = game.addChild(new FrenzyButton()); var magnetButton = game.addChild(new MagnetButton()); magnetButton.x = 2048 - magnetButton.width / 2 - 100; magnetButton.y = bombButton.y + bombButton.height + 20; frenzyButton.x = 2048 - frenzyButton.width / 2 - 100; frenzyButton.y = 2732 / 2; // Initialize important asset arrays, score, coins, diamonds, and fire rate var bullets = []; var enemies = []; var coins = []; // Array to store coin instances var diamonds = []; // Array to store diamond instances var fireRate = 30; // Initialize fire rate to 30 var totalCoins = 0; // Initialize total coins collected to 0 var totalDiamonds = 0; // Initialize total diamonds collected to 0 var score = 0; // Initialize score to 0 // Create score display var scoreTxt = new Text2(score.toString(), { size: 150, fill: "#000000" }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Create coins display instance var coinsDisplay = new CoinsDisplay(); coinsDisplay.scale.set(0.5, 0.5); LK.gui.top.addChild(coinsDisplay); coinsDisplay.y = scoreTxt.height; // Create diamonds display instance var diamondsDisplay = new DiamondsDisplay(); diamondsDisplay.scale.set(0.5, 0.5); LK.gui.top.addChild(diamondsDisplay); diamondsDisplay.y = coinsDisplay.y + coinsDisplay.height; // Create hero instance var hero = game.addChild(new Hero()); hero.x = 2048 / 2; hero.y = 2732 - hero.height / 2; // Position hero further down the screen // Game tick event LK.on('tick', function () { // Move bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].move(); if (bullets[i].y < 0) { bullets[i].destroy(); bullets.splice(i, 1); } } // Move enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].move(); if (enemies[j].y > 2732) { LK.showGameOver(); } } // Check for bullet-enemy collisions for (var b = bullets.length - 1; b >= 0; b--) { for (var e = enemies.length - 1; e >= 0; e--) { if (bullets[b].intersects(enemies[e])) { // Increase score and update display score++; scoreTxt.setText(score.toString()); bullets[b].destroy(); bullets.splice(b, 1); // Spawn a coin or diamond when an enemy is destroyed if (Math.random() < 0.2) { // 20% chance to drop a diamond if (diamonds.length < 5) { // Limit the number of diamonds on screen var newDiamond = new Diamond(); newDiamond.x = enemies[e].x; newDiamond.y = enemies[e].y; diamonds.push(newDiamond); game.addChild(newDiamond); } } else if (coins.length < 10) { // 80% chance to drop a coin var newCoin = new Coin(); newCoin.x = enemies[e].x; newCoin.y = enemies[e].y; coins.push(newCoin); game.addChild(newCoin); } enemies[e].destroy(); enemies.splice(e, 1); break; } } } // Move and collect diamonds for (var d = diamonds.length - 1; d >= 0; d--) { diamonds[d].move(); if (hero.intersects(diamonds[d])) { // Increment total diamonds collected totalDiamonds += 1; // Update the total diamonds display diamondsDisplay.updateDiamonds(totalDiamonds); // Increment total coins collected by diamond value totalCoins += diamonds[d].value; // Update the total coins display coinsDisplay.updateCoins(totalCoins); diamonds[d].destroy(); diamonds.splice(d, 1); } else if (diamonds[d].y > 2732) { // Remove diamonds that have moved off screen diamonds[d].destroy(); diamonds.splice(d, 1); } } // Move and collect coins for (var c = coins.length - 1; c >= 0; c--) { coins[c].move(); if (hero.intersects(coins[c])) { // Increment total coins collected totalCoins += coins[c].value; // Update the total coins display coinsDisplay.updateCoins(totalCoins); coins[c].destroy(); coins.splice(c, 1); } else if (coins[c].y > 2732) { // Remove coins that have moved off screen coins[c].destroy(); coins.splice(c, 1); } } // Spawn enemies var enemySpawnRate = frenzyButton.isFrenzyActive ? 30 : 120; // Halve the spawn rate during frenzy mode if (LK.ticks % enemySpawnRate == 0) { var newEnemy = new Enemy(); newEnemy.x = Math.random() * 2048; newEnemy.y = -50; enemies.push(newEnemy); game.addChild(newEnemy); } // Hero shooting if (LK.ticks % fireRate == 0) { var newBullet = new Bullet(); newBullet.x = hero.x; newBullet.y = hero.y; bullets.push(newBullet); game.addChild(newBullet); } // Update hero hero.update(); }); // Touch event to move hero game.on('down', function (obj) { var pos = obj.event.getLocalPosition(game); hero.x = pos.x; }); // Ensure the game is touchscreen compatible game.on('move', function (obj) { if (obj.event.data && obj.event.data.originalEvent.touches && obj.event.data.originalEvent.touches.length > 0) { var touch = obj.event.data.originalEvent.touches[0]; var pos = game.toLocal(new Point(touch.clientX, touch.clientY)); hero.x = pos.x; } });
===================================================================
--- original.js
+++ change.js
@@ -140,8 +140,11 @@
newCoin.y = enemy.y;
coins.push(newCoin);
game.addChild(newCoin);
}
+ // Increase score for each enemy destroyed by the bomb
+ score++;
+ scoreTxt.setText(score.toString());
enemy.destroy();
});
enemies = []; // Clear the enemies array
self.destroy(); // Destroy the bomb immediately after explosion
Coin. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Fighter jet. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Has rocket behind to boost movement to down faster
Explosion. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Medkit. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.