User prompt
Dalga, mermi, can bilgilerinin yanına "Pompalı Tüfek"i seçmek için bir buton ekle
User prompt
bugı düzeltmek için aşağıya eklediğimiz paneli silmeyi dene
User prompt
öldürülen her zombi 100 coin versin
User prompt
Please fix the bug: 'Uncaught ReferenceError: shotgunWeaponButton is not defined' in or related to this line: 'if (shotgunWeaponButton && !storage.hasShotgun) {' Line Number: 1003
User prompt
Please fix the bug: 'ReferenceError: weaponStatus is not defined' in or related to this line: 'weaponStatus.setText('Weapon: ' + (player.weaponType || 'Normal'));' Line Number: 1439
User prompt
Please fix the bug: 'ReferenceError: weaponStatus is not defined' in or related to this line: 'weaponStatus.setText('Weapon: ' + (player.weaponType || 'Normal'));' Line Number: 1439
User prompt
Please fix the bug: 'ReferenceError: weaponStatus is not defined' in or related to this line: 'weaponStatus.setText('Weapon: ' + (player.weaponType || 'Normal'));' Line Number: 1439
User prompt
alt kısımdaki panelden silah seçimi yapılsın
User prompt
alt kısma yeni bir panel oluştur
User prompt
hafif makineli tüfek için ayrı bir mermi oluştur
User prompt
pompalı tüfek için ayrı bir mermi oluştur
User prompt
pompalı tüfek ve hafif makineli tüfek ögeleri sadece 1 kere satılsın
User prompt
markette "Pompalı Tüfek" ve "Hafif Makineli Tüfek" eşyaları da satılsın.
User prompt
sol üstteki durdurma kısayolunun yanına "teslim olma" butonu ekle bu butonla karakterin mermi sayısı "0" olsun
User prompt
sağ üste market sekmesini açacak bir buton ekle
User prompt
market sekmesini baştan tasarla
User prompt
orta aşağıya "Market" ikonuyla market sekmesine hızlı erişim için bir buton ekle
User prompt
sağ alttaki butonun üstüne "shoot, playerHit, zombieHit" ses dosyalarını kapatacak bir buton ekle ve ikonu "Hoparlör" şeklinde olsun
User prompt
önceki eklenen butonu sil
User prompt
en son eklenen butonun görevi; shoot, playerhit ve zombiehit seslerini kapatmak olsun
User prompt
sağ alttaki butonun üstünde sesi kapatmak için bir buton olsun
User prompt
sağ alt köşede müziği kapatmak için bir buton olsun
User prompt
her 15 dalgada zombilerin hızı %25 artsın
User prompt
her 5 dalgada zombilerin canı %25 artsın
User prompt
her 10 dalgada zombilerin verdiği hasar %25 oranında artsın
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { healthUpgrades: 0, ammoUpgrades: 0, speedUpgrades: 0, coins: 0, healthUpgradeCost: 200, ammoUpgradeCost: 100, speedUpgradeCost: 300 }); /**** * Classes ****/ var Bullet = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.dx = 0; self.dy = 0; self.lifetime = 120; self.update = function () { self.x += self.dx * self.speed; self.y += self.dy * self.speed; // Rotate bullet to face movement direction graphics.rotation = Math.atan2(self.dy, self.dx); self.lifetime--; if (self.lifetime <= 0 || self.isOutOfBounds()) { self.remove(); return; } for (var i = 0; i < zombies.length; i++) { var zombie = zombies[i]; if (self.intersects(zombie)) { zombie.takeDamage(1); self.remove(); return; } } }; self.isOutOfBounds = function () { return self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732; }; self.remove = function () { var index = bullets.indexOf(self); if (index > -1) { bullets.splice(index, 1); } self.destroy(); }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.health = 100; self.maxHealth = 100; self.ammo = 30; self.maxAmmo = 30; self.shootCooldown = 0; self.baseShootCooldown = 10; self.update = function () { if (self.shootCooldown > 0) { self.shootCooldown--; } }; self.takeDamage = function (damage) { self.health -= damage; LK.getSound('playerHit').play(); if (self.health <= 0) { self.health = 0; LK.effects.flashScreen(0xff0000, 1000); showCustomGameOver(); } else { LK.effects.flashObject(self, 0xff0000, 200); } }; self.canShoot = function () { return self.ammo > 0 && self.shootCooldown <= 0; }; self.shoot = function () { if (self.canShoot()) { self.ammo--; self.shootCooldown = self.baseShootCooldown; return true; } return false; }; return self; }); var Zombie = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('zombie', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 1 + Math.random() * 0.5; self.health = 1; self.damage = 10; self.lastPlayerCollision = false; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } var currentCollision = self.intersects(player); if (!self.lastPlayerCollision && currentCollision) { player.takeDamage(self.damage); // Zombie dies from collision but doesn't give coins self.health = 0; LK.effects.flashObject(self, 0xffffff, 100); var index = zombies.indexOf(self); if (index > -1) { zombies.splice(index, 1); } self.destroy(); } self.lastPlayerCollision = currentCollision; }; self.takeDamage = function (damage) { self.health -= damage; if (self.health <= 0) { LK.effects.flashObject(self, 0xffffff, 100); LK.setScore(LK.getScore() + 10); storage.coins += 10; LK.getSound('zombieHit').play(); var index = zombies.indexOf(self); if (index > -1) { zombies.splice(index, 1); } self.destroy(); } }; return self; }); var Zombie2 = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('zombie2', { anchorX: 0.5, anchorY: 0.5 }); graphics.tint = 0xff6b6b; // Reddish tint to differentiate self.speed = 1 + Math.random() * 0.5; self.health = 1; self.damage = 10; self.lastPlayerCollision = false; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; } var currentCollision = self.intersects(player); if (!self.lastPlayerCollision && currentCollision) { player.takeDamage(self.damage); // Zombie dies from collision but doesn't give coins self.health = 0; LK.effects.flashObject(self, 0xffffff, 100); var index = zombies.indexOf(self); if (index > -1) { zombies.splice(index, 1); } self.destroy(); } self.lastPlayerCollision = currentCollision; }; self.takeDamage = function (damage) { self.health -= damage; if (self.health <= 0) { LK.effects.flashObject(self, 0xffffff, 100); LK.setScore(LK.getScore() + 10); storage.coins += 10; LK.getSound('zombieHit').play(); var index = zombies.indexOf(self); if (index > -1) { zombies.splice(index, 1); } self.destroy(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x2d2d2d }); /**** * Game Code ****/ var arena = game.attachAsset('arena', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, scaleX: 0.15, scaleY: 0.15 }); var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2; player.scaleX = 1.0; player.scaleY = 1.0; // Apply stored upgrades player.maxHealth = 100 + storage.healthUpgrades * 20; player.health = player.maxHealth; player.maxAmmo = 30 + storage.ammoUpgrades * 10; player.ammo = player.maxAmmo; player.baseShootCooldown = Math.max(1, 10 - storage.speedUpgrades); var zombies = []; var bullets = []; var waveNumber = 1; var zombiesInWave = 5; var zombiesSpawned = 0; var spawnTimer = 0; var gameOverScreen = null; var showingGameOver = false; var showingMarket = false; var marketPanel = null; var isPaused = false; var pausePanel = null; // Upgrade costs that increase with each purchase - loaded from storage var healthUpgradeCost = storage.healthUpgradeCost; var ammoUpgradeCost = storage.ammoUpgradeCost; var speedUpgradeCost = storage.speedUpgradeCost; var healthBackground = LK.getAsset('Tahta', { width: 300, height: 60, anchorX: 0, anchorY: 1, x: 120, y: 0 }); healthBackground.alpha = 0.7; LK.gui.bottomLeft.addChild(healthBackground); var healthBar = new Text2('Health: 100', { size: 60, fill: 0xFF0000 }); healthBar.anchor.set(0, 1); healthBar.x = 120; // Move away from bottom-left corner LK.gui.bottomLeft.addChild(healthBar); var ammoBackground = LK.getAsset('Tahta', { width: 300, height: 60, anchorX: 0, anchorY: 1, x: 120, y: -70 }); ammoBackground.alpha = 0.7; LK.gui.bottomLeft.addChild(ammoBackground); var ammoDisplay = new Text2('Ammo: 30', { size: 60, fill: 0x00FF00 }); ammoDisplay.anchor.set(0, 1); ammoDisplay.x = 120; // Move away from bottom-left corner ammoDisplay.y = -70; LK.gui.bottomLeft.addChild(ammoDisplay); var waveBackground = LK.getAsset('Tahta', { width: 300, height: 60, anchorX: 0, anchorY: 1, x: 120, y: -140 }); waveBackground.alpha = 0.7; LK.gui.bottomLeft.addChild(waveBackground); var waveInfo = new Text2('Wave: 1', { size: 60, fill: 0xFFFF00 }); waveInfo.anchor.set(0, 1); waveInfo.x = 120; // Move away from bottom-left corner waveInfo.y = -140; LK.gui.bottomLeft.addChild(waveInfo); var scoreBackground = LK.getAsset('Tahta', { width: 350, height: 90, anchorX: 0.5, anchorY: 0, x: 0, y: 0 }); scoreBackground.alpha = 0.7; LK.gui.top.addChild(scoreBackground); var scoreDisplay = new Text2('SCORE: 0', { size: 80, fill: 0xFFFFFF }); scoreDisplay.anchor.set(0.5, 0); LK.gui.top.addChild(scoreDisplay); var coinBackground = LK.getAsset('Tahta', { width: 300, height: 70, anchorX: 0.5, anchorY: 0, x: 0, y: 90 }); coinBackground.alpha = 0.7; LK.gui.top.addChild(coinBackground); var coinDisplay = new Text2('COIN: ' + storage.coins, { size: 60, fill: 0xFFD700 }); coinDisplay.anchor.set(0.5, 0); coinDisplay.y = 90; LK.gui.top.addChild(coinDisplay); function showCustomGameOver() { if (showingGameOver) return; showingGameOver = true; gameOverScreen = new Container(); // Semi-transparent background var background = LK.getAsset('arena', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, scaleX: 4, scaleY: 4 }); background.alpha = 0.8; background.tint = 0x000000; gameOverScreen.addChild(background); // Game Over title var gameOverTitle = new Text2('GAME OVER', { size: 140, fill: 0xFF0000 }); gameOverTitle.anchor.set(0.5, 0.5); gameOverTitle.x = 2048 / 2; gameOverTitle.y = 2732 / 2 - 200; gameOverScreen.addChild(gameOverTitle); // Final score display var finalScore = new Text2('Final Score: ' + LK.getScore(), { size: 100, fill: 0xFFFFFF }); finalScore.anchor.set(0.5, 0.5); finalScore.x = 2048 / 2; finalScore.y = 2732 / 2 - 100; gameOverScreen.addChild(finalScore); // Market button var marketButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 50 }); marketButton.tint = 0x2196F3; marketButton.down = function (x, y, obj) { showMarket(); }; gameOverScreen.addChild(marketButton); var marketText = new Text2('MARKET', { size: 80, fill: 0xFFFFFF }); marketText.anchor.set(0.5, 0.5); marketText.x = 2048 / 2; marketText.y = 2732 / 2 + 50; gameOverScreen.addChild(marketText); // Restart button var restartButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 150 }); restartButton.tint = 0xFF5722; restartButton.down = function (x, y, obj) { restartGame(); }; gameOverScreen.addChild(restartButton); var restartText = new Text2('RESTART', { size: 80, fill: 0xFFFFFF }); restartText.anchor.set(0.5, 0.5); restartText.x = 2048 / 2; restartText.y = 2732 / 2 + 150; gameOverScreen.addChild(restartText); game.addChild(gameOverScreen); } function hideGameOver() { if (gameOverScreen) { gameOverScreen.destroy(); gameOverScreen = null; } showingGameOver = false; } function showMarket() { if (showingMarket) return; showingMarket = true; marketPanel = new Container(); // Semi-transparent background var background = LK.getAsset('arena', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, scaleX: 4, scaleY: 4 }); background.alpha = 0.9; background.tint = 0x000000; marketPanel.addChild(background); // Market title var marketTitle = new Text2('MARKET', { size: 140, fill: 0xFFFFFF }); marketTitle.anchor.set(0.5, 0.5); marketTitle.x = 2048 / 2; marketTitle.y = 2732 / 2 - 400; marketPanel.addChild(marketTitle); // Show current coins var currentCoins = storage.coins; var scoreText = new Text2('COIN: ' + storage.coins, { size: 80, fill: 0xFFD700 }); scoreText.anchor.set(0.5, 0.5); scoreText.x = 2048 / 2; scoreText.y = 2732 / 2 - 300; marketPanel.addChild(scoreText); // Health upgrade background var healthUpgradeBackground = LK.getAsset('Tahta', { width: 520, height: 120, anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 150 }); healthUpgradeBackground.alpha = 0.7; marketPanel.addChild(healthUpgradeBackground); // Health upgrade var healthUpgrade = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 150 }); healthUpgrade.down = function (x, y, obj) { if (storage.coins >= healthUpgradeCost) { storage.coins -= healthUpgradeCost; healthUpgradeCost = Math.floor(healthUpgradeCost * 1.5); // Increase cost by 50% storage.healthUpgradeCost = healthUpgradeCost; // Save to storage storage.healthUpgrades++; player.maxHealth += 20; player.health = Math.min(player.health + 20, player.maxHealth); coinDisplay.setText('COIN: ' + storage.coins); LK.getSound('coinPurchase').play(); hideMarket(); showMarket(); // Refresh market display } }; marketPanel.addChild(healthUpgrade); var healthText = new Text2('Health +20 (' + healthUpgradeCost + ' COIN)', { size: 65, fill: 0xFFFFFF }); healthText.anchor.set(0.5, 0.5); healthText.x = 2048 / 2 - 100; healthText.y = 2732 / 2 - 150; marketPanel.addChild(healthText); // Ammo upgrade background var ammoUpgradeBackground = LK.getAsset('Tahta', { width: 470, height: 120, anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 50 }); ammoUpgradeBackground.alpha = 0.7; marketPanel.addChild(ammoUpgradeBackground); // Ammo upgrade var ammoUpgrade = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 50 }); ammoUpgrade.down = function (x, y, obj) { if (storage.coins >= ammoUpgradeCost) { storage.coins -= ammoUpgradeCost; ammoUpgradeCost = Math.floor(ammoUpgradeCost * 1.5); // Increase cost by 50% storage.ammoUpgradeCost = ammoUpgradeCost; // Save to storage storage.ammoUpgrades++; player.maxAmmo += 10; player.ammo = Math.min(player.ammo + 10, player.maxAmmo); coinDisplay.setText('COIN: ' + storage.coins); LK.getSound('coinPurchase').play(); hideMarket(); showMarket(); // Refresh market display } }; marketPanel.addChild(ammoUpgrade); var ammoText = new Text2('Ammo +10 (' + ammoUpgradeCost + ' COIN)', { size: 65, fill: 0xFFFFFF }); ammoText.anchor.set(0.5, 0.5); ammoText.x = 2048 / 2 - 100; ammoText.y = 2732 / 2 - 50; marketPanel.addChild(ammoText); // Speed upgrade background var speedUpgradeBackground = LK.getAsset('Tahta', { width: 540, height: 120, anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 50 }); speedUpgradeBackground.alpha = 0.7; marketPanel.addChild(speedUpgradeBackground); // Speed upgrade var speedUpgrade = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 50 }); speedUpgrade.down = function (x, y, obj) { if (storage.coins >= speedUpgradeCost) { storage.coins -= speedUpgradeCost; speedUpgradeCost = Math.floor(speedUpgradeCost * 1.5); // Increase cost by 50% storage.speedUpgradeCost = speedUpgradeCost; // Save to storage storage.speedUpgrades++; player.baseShootCooldown = Math.max(1, player.baseShootCooldown - 1); coinDisplay.setText('COIN: ' + storage.coins); LK.getSound('coinPurchase').play(); hideMarket(); showMarket(); // Refresh market display } }; marketPanel.addChild(speedUpgrade); var speedText = new Text2('Fire Rate +1 (' + speedUpgradeCost + ' COIN)', { size: 65, fill: 0xFFFFFF }); speedText.anchor.set(0.5, 0.5); speedText.x = 2048 / 2 - 100; speedText.y = 2732 / 2 + 50; marketPanel.addChild(speedText); // Close button background var closeButtonBackground = LK.getAsset('Tahta', { width: 520, height: 120, anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 200 }); closeButtonBackground.alpha = 0.7; marketPanel.addChild(closeButtonBackground); // Close button var closeButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 200 }); closeButton.tint = 0x666666; closeButton.down = function (x, y, obj) { hideMarket(); }; marketPanel.addChild(closeButton); var closeText = new Text2('CLOSE', { size: 80, fill: 0xFFFFFF }); closeText.anchor.set(0.5, 0.5); closeText.x = 2048 / 2; closeText.y = 2732 / 2 + 200; marketPanel.addChild(closeText); game.addChild(marketPanel); } function hideMarket() { if (marketPanel) { marketPanel.destroy(); marketPanel = null; } showingMarket = false; } function showPause() { if (isPaused) return; isPaused = true; pausePanel = new Container(); // Semi-transparent background var background = LK.getAsset('arena', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2, scaleX: 3, scaleY: 3 }); background.alpha = 0.8; background.tint = 0x000000; pausePanel.addChild(background); // Pause menu panel with wooden background var pauseMenuBackground = LK.getAsset('Tahta', { width: 600, height: 500, anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 }); pauseMenuBackground.alpha = 0.9; pausePanel.addChild(pauseMenuBackground); // Pause title var pauseTitle = new Text2('PAUSE MENU', { size: 100, fill: 0xFFFFFF }); pauseTitle.anchor.set(0.5, 0.5); pauseTitle.x = 2048 / 2; pauseTitle.y = 2732 / 2 - 180; pausePanel.addChild(pauseTitle); // Restart button var restartButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 80 }); restartButton.tint = 0xFF5722; restartButton.down = function (x, y, obj) { hidePause(); restartGame(); }; pausePanel.addChild(restartButton); var restartText = new Text2('RESTART', { size: 60, fill: 0xFFFFFF }); restartText.anchor.set(0.5, 0.5); restartText.x = 2048 / 2; restartText.y = 2732 / 2 - 80; pausePanel.addChild(restartText); // Continue button var continueButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 20 }); continueButton.down = function (x, y, obj) { hidePause(); }; pausePanel.addChild(continueButton); var continueText = new Text2('CONTINUE', { size: 60, fill: 0xFFFFFF }); continueText.anchor.set(0.5, 0.5); continueText.x = 2048 / 2; continueText.y = 2732 / 2 + 20; pausePanel.addChild(continueText); // Market button var marketButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 120 }); marketButton.tint = 0x2196F3; marketButton.down = function (x, y, obj) { hidePause(); showMarket(); }; pausePanel.addChild(marketButton); var marketText = new Text2('MARKET', { size: 60, fill: 0xFFFFFF }); marketText.anchor.set(0.5, 0.5); marketText.x = 2048 / 2; marketText.y = 2732 / 2 + 120; pausePanel.addChild(marketText); game.addChild(pausePanel); } function hidePause() { if (pausePanel) { pausePanel.destroy(); pausePanel = null; } isPaused = false; } function restartGame() { hideGameOver(); // Reset player with upgraded stats player.maxHealth = 100 + storage.healthUpgrades * 20; player.health = player.maxHealth; player.maxAmmo = 30 + storage.ammoUpgrades * 10; player.ammo = player.maxAmmo; player.baseShootCooldown = Math.max(1, 10 - storage.speedUpgrades); player.x = 2048 / 2; player.y = 2732 / 2; // Clear all entities for (var i = 0; i < zombies.length; i++) { zombies[i].destroy(); } zombies = []; for (var i = 0; i < bullets.length; i++) { bullets[i].destroy(); } bullets = []; // Reset game state waveNumber = 1; zombiesInWave = 5; zombiesSpawned = 0; spawnTimer = 0; LK.setScore(0); } function spawnZombie() { var zombie = Math.random() < 0.5 ? new Zombie() : new Zombie2(); // Define spawn locations around the arena edges var spawnLocations = [{ x: Math.random() * 2048, y: 100 }, // Top edge { x: Math.random() * 2048, y: 2632 }, // Bottom edge { x: 100, y: Math.random() * 2732 }, // Left edge { x: 1948, y: Math.random() * 2732 }, // Right edge { x: 300, y: 300 }, // Top-left corner { x: 1748, y: 300 }, // Top-right corner { x: 300, y: 2432 }, // Bottom-left corner { x: 1748, y: 2432 } // Bottom-right corner ]; // Pick a random spawn location from the predefined spots var spawnIndex = Math.floor(Math.random() * spawnLocations.length); var spawnPoint = spawnLocations[spawnIndex]; zombie.x = spawnPoint.x; zombie.y = spawnPoint.y; // Increase zombie health by 25% every 5 waves var healthMultiplier = Math.floor(waveNumber / 5) * 0.25; zombie.health = Math.floor(1 * (1 + healthMultiplier)); // Increase zombie speed by 25% every 15 waves var speedMultiplier = Math.floor(waveNumber / 15) * 0.25; zombie.speed = zombie.speed * (1 + speedMultiplier); // Increase zombie damage by 25% every 10 waves var damageMultiplier = Math.floor(waveNumber / 10) * 0.25; zombie.damage = Math.floor(zombie.damage * (1 + damageMultiplier)); zombie.scaleX = 1.0; zombie.scaleY = 1.0; zombies.push(zombie); game.addChild(zombie); } function shootBullet(targetX, targetY) { if (player.shoot()) { var bullet = new Bullet(); bullet.x = player.x; bullet.y = player.y; var dx = targetX - player.x; var dy = targetY - player.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 0) { bullet.dx = dx / distance; bullet.dy = dy / distance; // Rotate player to face shooting direction player.rotation = Math.atan2(dy, dx); } bullet.scaleX = 0.15; bullet.scaleY = 0.15; bullets.push(bullet); game.addChild(bullet); LK.getSound('shoot').play(); } } game.down = function (x, y, obj) { // Pause menu button clicks when paused if (isPaused) { // Restart button click if (x >= 2048 / 2 - 150 && x <= 2048 / 2 + 150 && y >= 2732 / 2 - 130 && y <= 2732 / 2 - 30) { hidePause(); restartGame(); return; } // Continue button click if (x >= 2048 / 2 - 150 && x <= 2048 / 2 + 150 && y >= 2732 / 2 - 30 && y <= 2732 / 2 + 70) { hidePause(); return; } // Market button click if (x >= 2048 / 2 - 150 && x <= 2048 / 2 + 150 && y >= 2732 / 2 + 70 && y <= 2732 / 2 + 170) { hidePause(); showMarket(); return; } return; } if (showingGameOver) { // Market button click detection if (x >= 2048 / 2 - 150 && x <= 2048 / 2 + 150 && y >= 2732 / 2 + 10 && y <= 2732 / 2 + 90) { showMarket(); return; } // Restart button click detection if (x >= 2048 / 2 - 150 && x <= 2048 / 2 + 150 && y >= 2732 / 2 + 110 && y <= 2732 / 2 + 190) { restartGame(); return; } } else if (showingMarket) { var currentCoins = storage.coins; // Health upgrade button click if (x >= 2048 / 2 - 300 && x <= 2048 / 2 + 300 && y >= 2732 / 2 - 200 && y <= 2732 / 2 - 100) { if (storage.coins >= healthUpgradeCost) { storage.coins -= healthUpgradeCost; healthUpgradeCost = Math.floor(healthUpgradeCost * 1.5); // Increase cost by 50% storage.healthUpgradeCost = healthUpgradeCost; // Save to storage storage.healthUpgrades++; player.maxHealth += 20; player.health = Math.min(player.health + 20, player.maxHealth); coinDisplay.setText('COIN: ' + storage.coins); LK.getSound('coinPurchase').play(); hideMarket(); showMarket(); // Refresh market display } return; } // Ammo upgrade button click if (x >= 2048 / 2 - 250 && x <= 2048 / 2 + 250 && y >= 2732 / 2 - 100 && y <= 2732 / 2 + 0) { if (storage.coins >= ammoUpgradeCost) { storage.coins -= ammoUpgradeCost; ammoUpgradeCost = Math.floor(ammoUpgradeCost * 1.5); // Increase cost by 50% storage.ammoUpgradeCost = ammoUpgradeCost; // Save to storage storage.ammoUpgrades++; player.maxAmmo += 10; player.ammo = Math.min(player.ammo + 10, player.maxAmmo); coinDisplay.setText('COIN: ' + storage.coins); LK.getSound('coinPurchase').play(); hideMarket(); showMarket(); // Refresh market display } return; } // Speed upgrade button click if (x >= 2048 / 2 - 275 && x <= 2048 / 2 + 275 && y >= 2732 / 2 + 0 && y <= 2732 / 2 + 100) { if (storage.coins >= speedUpgradeCost) { storage.coins -= speedUpgradeCost; speedUpgradeCost = Math.floor(speedUpgradeCost * 1.5); // Increase cost by 50% storage.speedUpgradeCost = speedUpgradeCost; // Save to storage storage.speedUpgrades++; player.baseShootCooldown = Math.max(1, player.baseShootCooldown - 1); coinDisplay.setText('COIN: ' + storage.coins); LK.getSound('coinPurchase').play(); hideMarket(); showMarket(); // Refresh market display } return; } // Close button click if (x >= 2048 / 2 - 200 && x <= 2048 / 2 + 200 && y >= 2732 / 2 + 150 && y <= 2732 / 2 + 250) { hideMarket(); return; } } else { shootBullet(x, y); } }; game.update = function () { if (showingGameOver || showingMarket || isPaused) { return; } spawnTimer++; if (zombiesSpawned < zombiesInWave && spawnTimer >= 60) { spawnZombie(); zombiesSpawned++; spawnTimer = 0; } if (zombiesSpawned >= zombiesInWave && zombies.length === 0) { waveNumber++; zombiesInWave = Math.min(5 + waveNumber * 2, 20); zombiesSpawned = 0; } // Check if player has no ammo and end game if (player.ammo <= 0) { LK.effects.flashScreen(0xff0000, 1000); showCustomGameOver(); return; } healthBar.setText('Health: ' + player.health); ammoDisplay.setText('Ammo: ' + player.ammo); scoreDisplay.setText('SCORE: ' + LK.getScore()); coinDisplay.setText('COIN: ' + storage.coins); waveInfo.setText('Wave: ' + waveNumber); for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); } for (var i = zombies.length - 1; i >= 0; i--) { zombies[i].update(); } }; // Music toggle button var musicButton = LK.getAsset('Tahta', { width: 120, height: 120, anchorX: 1, anchorY: 1, x: 0, y: 0 }); musicButton.alpha = 0.8; LK.gui.bottomRight.addChild(musicButton); var musicText = new Text2('♪', { size: 80, fill: 0xFFFFFF }); musicText.anchor.set(0.5, 0.5); musicText.x = -60; musicText.y = -60; LK.gui.bottomRight.addChild(musicText); var musicPlaying = true; musicButton.down = function (x, y, obj) { if (musicPlaying) { LK.stopMusic(); musicText.setText('♪'); musicText.alpha = 0.5; musicPlaying = false; } else { LK.playMusic('bgmusic'); musicText.setText('♪'); musicText.alpha = 1.0; musicPlaying = true; } }; LK.playMusic('bgmusic');
===================================================================
--- original.js
+++ change.js
@@ -944,5 +944,38 @@
for (var i = zombies.length - 1; i >= 0; i--) {
zombies[i].update();
}
};
+// Music toggle button
+var musicButton = LK.getAsset('Tahta', {
+ width: 120,
+ height: 120,
+ anchorX: 1,
+ anchorY: 1,
+ x: 0,
+ y: 0
+});
+musicButton.alpha = 0.8;
+LK.gui.bottomRight.addChild(musicButton);
+var musicText = new Text2('♪', {
+ size: 80,
+ fill: 0xFFFFFF
+});
+musicText.anchor.set(0.5, 0.5);
+musicText.x = -60;
+musicText.y = -60;
+LK.gui.bottomRight.addChild(musicText);
+var musicPlaying = true;
+musicButton.down = function (x, y, obj) {
+ if (musicPlaying) {
+ LK.stopMusic();
+ musicText.setText('♪');
+ musicText.alpha = 0.5;
+ musicPlaying = false;
+ } else {
+ LK.playMusic('bgmusic');
+ musicText.setText('♪');
+ musicText.alpha = 1.0;
+ musicPlaying = true;
+ }
+};
LK.playMusic('bgmusic');
\ No newline at end of file
Üstten görünümlü zombi. In-Game asset. 2d. High contrast. No shadows
Ortasında elips şeklinde bir boşluk hariç her yeri sık ağaçlık olan bir orman. In-Game asset. 2d. High contrast. No shadows
Ahşap tema. In-Game asset. 2d. High contrast. No shadows
pompalı tüfek mermisi. In-Game asset. 2d. High contrast. No shadows
hafif makineli tüfek mermisi. In-Game asset. 2d. High contrast. No shadows
Uzi çiz. In-Game asset. 2d. High contrast. No shadows
Pompalı Tüfek. In-Game asset. 2d. High contrast. No shadows
Bunun arkaplanını sil
Arkaplanını sil
boss zombie. In-Game asset. 2d. High contrast. No shadows
dümdüz sadece buzullardan oluşsun aralarında yarıklar olmasın