User prompt
Marketten eşya satın alınca altın sesi çıksın
User prompt
Zombi oyuncuya dokunduğunda ses çıkramasın sadece ölünce çıkarsın
User prompt
Oyuncu hasar aldığında ses çıkarsın
User prompt
Bir zombi daha oluştur ama sadece görünüşü farklı olsun
User prompt
Eski haritanın olduğu en son ayarlara dön
User prompt
Zombiler ekranın dışında spawn olsun
User prompt
Zombiler görünür olacak kadar büyüsün
User prompt
Zombiler haritanın dışında spawnlansin
User prompt
Zombiler 1000 kat daha büyük olsun
User prompt
Zombiler 100 kat daha büyük olsun
User prompt
Zombiler 50 kat büyüsün
User prompt
Zombiler player kadar büyük olsun ve daha uzakta spawn olsunlar
User prompt
Zombiler 10 kat büyüsün ve playerdan daha uzakta spawn olsunkar
User prompt
Player eski boyutuna dönsün ve oyun daha uzaktan görünsün
User prompt
Player 100 kat büyük olsun
User prompt
Oyun daha uzaktan görünsün
User prompt
Oyun daha uzaktan görünsün
User prompt
Oyun daha uzaktan görünsün
User prompt
Oyun daha uzaktan görünsün
User prompt
Zombiler haritanın içinde spawn olsun
User prompt
Zombiler belli yerlerde spawn olsun
User prompt
Marketteki eşyaların altındaki barlar yazıyla eşit usunlukta olsun
User prompt
Mermi bitinci oyun otomatik olarak bitsin
User prompt
Her yeni dalgada zombilerin canı artsın
User prompt
Marketteki eşyalar daha pahalı olsun
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1", { healthUpgrades: 0, ammoUpgrades: 0, speedUpgrades: 0, coins: 0 }); /**** * 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; 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); LK.getSound('zombieHit').play(); 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 healthBar = new Text2('Health: 100', { size: 60, fill: 0xFF0000 }); healthBar.anchor.set(0, 0); LK.gui.topLeft.addChild(healthBar); var ammoDisplay = new Text2('Ammo: 30', { size: 60, fill: 0x00FF00 }); ammoDisplay.anchor.set(0, 0); ammoDisplay.y = 70; LK.gui.topLeft.addChild(ammoDisplay); var scoreDisplay = new Text2('SCORE: 0', { size: 80, fill: 0xFFFFFF }); scoreDisplay.anchor.set(0.5, 0); LK.gui.top.addChild(scoreDisplay); 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); var waveDisplay = new Text2('Wave: 1', { size: 60, fill: 0xFFFF00 }); waveDisplay.anchor.set(1, 0); LK.gui.topRight.addChild(waveDisplay); 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: 3, scaleY: 3 }); background.alpha = 0.8; background.tint = 0x000000; gameOverScreen.addChild(background); // Game Over text var gameOverText = new Text2('GAME OVER', { size: 120, fill: 0xFF0000 }); gameOverText.anchor.set(0.5, 0.5); gameOverText.x = 2048 / 2; gameOverText.y = 2732 / 2 - 200; gameOverScreen.addChild(gameOverText); // Final score var finalScoreText = new Text2('Final SCORE: ' + LK.getScore(), { size: 80, fill: 0xFFFFFF }); finalScoreText.anchor.set(0.5, 0.5); finalScoreText.x = 2048 / 2; finalScoreText.y = 2732 / 2 - 100; gameOverScreen.addChild(finalScoreText); // Market button var marketButton = LK.getAsset('marketButton', { anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 50 }); gameOverScreen.addChild(marketButton); // Market button text var marketText = new Text2('MARKET', { size: 60, 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 = 0x2196F3; gameOverScreen.addChild(restartButton); // Restart button text var restartText = new Text2('RESTART', { size: 60, 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 var healthUpgrade = LK.getAsset('marketButton', { width: 500, height: 100, color: 0xFF6B6B, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 150 }); healthUpgrade.down = function (x, y, obj) { if (storage.coins >= 200) { storage.coins -= 200; storage.healthUpgrades++; player.maxHealth += 20; player.health = Math.min(player.health + 20, player.maxHealth); coinDisplay.setText('COIN: ' + storage.coins); hideMarket(); showMarket(); // Refresh market display } }; marketPanel.addChild(healthUpgrade); var healthText = new Text2('Health +20 (200 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 var ammoUpgrade = LK.getAsset('marketButton', { width: 450, height: 100, color: 0x4ECDC4, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 - 50 }); ammoUpgrade.down = function (x, y, obj) { if (storage.coins >= 100) { storage.coins -= 100; storage.ammoUpgrades++; player.maxAmmo += 10; player.ammo = Math.min(player.ammo + 10, player.maxAmmo); coinDisplay.setText('COIN: ' + storage.coins); hideMarket(); showMarket(); // Refresh market display } }; marketPanel.addChild(ammoUpgrade); var ammoText = new Text2('Ammo +10 (100 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 var speedUpgrade = LK.getAsset('marketButton', { width: 520, height: 100, color: 0x45B7D1, shape: 'box', anchorX: 0.5, anchorY: 0.5, x: 2048 / 2, y: 2732 / 2 + 50 }); speedUpgrade.down = function (x, y, obj) { if (storage.coins >= 300) { storage.coins -= 300; storage.speedUpgrades++; player.baseShootCooldown = Math.max(1, player.baseShootCooldown - 1); coinDisplay.setText('COIN: ' + storage.coins); hideMarket(); showMarket(); // Refresh market display } }; marketPanel.addChild(speedUpgrade); var speedText = new Text2('Fire Rate +1 (300 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 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 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 = new Zombie(); // Define specific spawn locations inside the arena boundaries // Arena is centered at (2048/2, 2732/2) with size 1800x1800 scaled by 0.15 var arenaSize = 1800 * 0.15; var arenaLeft = (2048 - arenaSize) / 2; var arenaRight = (2048 + arenaSize) / 2; var arenaTop = (2732 - arenaSize) / 2; var arenaBottom = (2732 + arenaSize) / 2; var spawnLocations = [{ x: arenaLeft + 20, y: arenaTop + 20 }, // Top-left inside arena { x: arenaRight - 20, y: arenaTop + 20 }, // Top-right inside arena { x: arenaLeft + 20, y: arenaBottom - 20 }, // Bottom-left inside arena { x: arenaRight - 20, y: arenaBottom - 20 }, // Bottom-right inside arena { x: 2048 / 2, y: arenaTop + 20 }, // Top center inside arena { x: 2048 / 2, y: arenaBottom - 20 }, // Bottom center inside arena { x: arenaLeft + 20, y: 2732 / 2 }, // Left center inside arena { x: arenaRight - 20, y: 2732 / 2 } // Right center inside arena ]; // 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 based on wave number zombie.health = 1 + Math.floor(waveNumber / 2); 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) { 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 >= 200) { storage.coins -= 200; storage.healthUpgrades++; player.maxHealth += 20; player.health = Math.min(player.health + 20, player.maxHealth); coinDisplay.setText('COIN: ' + storage.coins); 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 >= 100) { storage.coins -= 100; storage.ammoUpgrades++; player.maxAmmo += 10; player.ammo = Math.min(player.ammo + 10, player.maxAmmo); coinDisplay.setText('COIN: ' + storage.coins); 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 >= 300) { storage.coins -= 300; storage.speedUpgrades++; player.baseShootCooldown = Math.max(1, player.baseShootCooldown - 1); coinDisplay.setText('COIN: ' + storage.coins); 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) { 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; waveDisplay.setText('Wave: ' + waveNumber); for (var i = 0; i < zombies.length; i++) { zombies[i].speed += 0.1; } } // 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); for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); } for (var i = zombies.length - 1; i >= 0; i--) { zombies[i].update(); } }; LK.playMusic('bgmusic');
===================================================================
--- original.js
+++ change.js
@@ -483,44 +483,44 @@
var arenaRight = (2048 + arenaSize) / 2;
var arenaTop = (2732 - arenaSize) / 2;
var arenaBottom = (2732 + arenaSize) / 2;
var spawnLocations = [{
- x: arenaLeft + 50,
- y: arenaTop + 50
+ x: arenaLeft + 20,
+ y: arenaTop + 20
},
// Top-left inside arena
{
- x: arenaRight - 50,
- y: arenaTop + 50
+ x: arenaRight - 20,
+ y: arenaTop + 20
},
// Top-right inside arena
{
- x: arenaLeft + 50,
- y: arenaBottom - 50
+ x: arenaLeft + 20,
+ y: arenaBottom - 20
},
// Bottom-left inside arena
{
- x: arenaRight - 50,
- y: arenaBottom - 50
+ x: arenaRight - 20,
+ y: arenaBottom - 20
},
// Bottom-right inside arena
{
x: 2048 / 2,
- y: arenaTop + 50
+ y: arenaTop + 20
},
// Top center inside arena
{
x: 2048 / 2,
- y: arenaBottom - 50
+ y: arenaBottom - 20
},
// Bottom center inside arena
{
- x: arenaLeft + 50,
+ x: arenaLeft + 20,
y: 2732 / 2
},
// Left center inside arena
{
- x: arenaRight - 50,
+ x: arenaRight - 20,
y: 2732 / 2
} // Right center inside arena
];
// Pick a random spawn location from the predefined spots
@@ -529,10 +529,10 @@
zombie.x = spawnPoint.x;
zombie.y = spawnPoint.y;
// Increase zombie health based on wave number
zombie.health = 1 + Math.floor(waveNumber / 2);
- zombie.scaleX = 1.5;
- zombie.scaleY = 1.5;
+ zombie.scaleX = 1.0;
+ zombie.scaleY = 1.0;
zombies.push(zombie);
game.addChild(zombie);
}
function shootBullet(targetX, targetY) {
Ü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