User prompt
Oyuncuya hasar aldığında bir hasar alma animasyonu ekle. Düşmanlara da öldüklerinde hafif bir yok olma animasyonu ekle. Ayrıca, oyuncu bir güçlendirme aldığında, karaktere hafif bir büyüyüp küçülme animasyonu ekle. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Speed değeri 10 olduktan sonra artmasın ve bu noktadan sonra Speed güçlendirmesi artık düşmesin. Ayrıca, düşmanlar en alt çizgiye gelirlerse oyuncu hasar alsın.
User prompt
Please fix the bug: 'ReferenceError: AttackSpeedUpgrade is not defined' in or related to this line: 'var attackUpgrade = new AttackSpeedUpgrade();' Line Number: 418
User prompt
Normal düşmanların boyutunu ve her 2 dakikada bir gelen güçlü düşmanın boyutunu artır. Ayrıca, her özellik için güçlendirmeleri ayır ve her birinin farklı renkte güçlendirmesi olsun: Damage güçlendirmesi sarı, Speed mavi, Multishot bordo, Fire Rate turuncu olsun. Fire Rate 8'e ulaştıktan sonra artık bu güçlendirme düşmesin.
User prompt
Bazen güçlendirme aldığımda hasarımda bir anda çok fazla artış gözlemliyorum, bunu istemiyorum. Hasar artışı bir bir olsun.
User prompt
Düşmanların her 30 saniyede bir canlarının 10 artması kalsın, ama buna ek olarak her 1 dakikada bir canlarının ayrıca 20 artmasını istiyorum. Ayrıca, her 2 dakikada bir aşırı yüksek cana sahip bir düşman eklensin; bu düşmanın başlangıç canı 250 olsun ve her gelişinde (her 2 dakikada bir) +250 can eklenerek gelsin.
User prompt
Skor sürekli artmasın biz düşman öldürünce artsın istiyorum ve distance kaldır
User prompt
Düşmanlar çok kenarlara yaklaşmasınlar 25 piksel sınır koymanı istiyorum sınırlara hem güçlendirmeler için hemde düşmanlar için
User prompt
Güçlendirmeler aşağı doğru çok yavaş geliyor onların hızını 2 katına çıkar
User prompt
Güçlendirmeler çok yavaş düşüyor onları hızlandır
User prompt
Saldırı hızımın üst değeri 8 olsun ve 8'e ulaştıktan sonra artık hiç artmasın. Ayrıca, düşmanların güçlenme aralığını 30 saniyede bir olacak şekilde değiştirmeni istiyorum.
User prompt
Saldırı hızı değerim azaldıkça saldırı hızım artıyor; ben bunu istemiyorum. Saldırı hızım 1 olarak başlasın ve her bir tane aldığımda bir artsın; yani saldırı hızım gerçekten artsın istiyorum.
User prompt
Saldırı hızım azaldıkça değil, arttıkça hızlansın. Ayrıca, Multishot 5'e ulaştıktan sonra 6. kez Multishot güçlendirmesi alındığında, mermi sayısı 1'e düşsün ama hasara +3 eklensin şeklinde ayarla.
User prompt
Güçlendirme düşme olasılıkları şöyle olsun: Multishot %10, Speed %20, Damage %20, Fire Rate %25. Ekstra can güçlendirmesi de eklensin, bu yeşil olsun ve düşme oranı %5 olsun.
User prompt
Düşmanlardan düşen güçlendirme olasılığını düşür ve her 1 dakikada bir güçlenen düşmanların can miktarını on on artır.
User prompt
Güçlendirmeleri, düşmanlar öldükten sonra belli bir oranda düşecek şekilde ayarla. Ayrıca, her 1 dakikada bir düşmanların canı artsın. Canavarlardan düşen güçlendirmelerin yanında, çok daha nadir bir şekilde güçlendirmelerin normal yolla da gelmesini istiyorum. Güçlendirmeler rastgele bir değer vermek yerine, belli oranlarla artış sağlasın. Aldığım her güçlendirmenin etkisi kalıcı olsun ve beni yavaş yavaş güçlendirsin.
User prompt
Orta çizgiyi kaldırmanı istiyorum ve düşmanlarla güçlendirmelerin aynı yerden, karışık olarak gelmesini istiyorum. Bir de, sahip olduğum güçlendirmelerin görünmesi için, sağda canımın göründüğü yere sahip olduğum güçlendirmeleri de ekle. Ayrıca, gelen güçlendirmelerin miktarını azalt.
User prompt
Tamam, şimdi gelen düşmanları ve gelen güçlendirme özelliklerini geldikleri tarafların ortasında yapma. Mesela, sol taraftan gelen düşmanlar sol tarafın içinde kalmak şartıyla herhangi bir yerinden gelsin. Aynı şey güçlendirmeler için de geçerli olsun.
User prompt
Saldırı hızı azalt ve saldırı hızını artıran eklentiler ekle (mor olsun). Ayrıca, düşmanların can seviyeleri üstlerinde gösterilsin.
User prompt
Tamam, şimdi karakterimizin ateş etmesini sağla ve gelen düşmanların sağlıkları olsun. Sağ taraftaki geliştirmelere ise ateş özellikleri ekle; örneğin daha fazla mermi ateş etmesi, daha hızlı ateş etmesi gibi özellikler ekle. Ayrıca karakterin sadece sola ve sağa gitmesini ayarlama, serbest bir şekilde geçiş yapma imkânı sağla. Karakteri ben kendim sürüklemek istiyorum.
Code edit (1 edits merged)
Please save this source code
User prompt
Corridor Runner
Initial prompt
Uzun bir koridor olsun ve bu koridorda 2 farklı yol bulunsun; sağ ve sol olarak ikiye ayrılmış olsun. Bu koridorların arasında ince bir duvar bulunsun. Soldaki koridordan sürekli düşman gelsin, sağdaki koridordan ise karakterimizi geliştirme özellikleri gelsin.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var AttackSpeedUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('attackSpeedUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 15; self.damage = 1; self.lastY = 0; self.update = function () { self.y -= self.speed; }; return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 4; self.health = 3; self.maxHealth = 3; self.lastY = 0; self.healthText = new Text2(self.health.toString(), { size: 30, fill: 0xFFFFFF }); self.healthText.anchor.set(0.5, 0.5); self.healthText.x = 0; self.healthText.y = -40; self.addChild(self.healthText); self.takeDamage = function (damage) { self.health -= damage; self.healthText.setText(self.health.toString()); LK.effects.flashObject(self, 0xFFFFFF, 200); if (self.health <= 0) { return true; // Enemy is dead } return false; }; self.update = function () { self.y += self.speed; }; return self; }); var HealthUpgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('healthUpgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.health = 3; self.maxHealth = 3; self.speed = 5; self.fireRate = 1; // Start at 1 and increment up self.bulletDamage = 1; self.multiShot = 1; // Number of bullets per shot self.lastShot = 0; self.shoot = function () { if (LK.ticks - self.lastShot >= Math.floor(60 / self.fireRate)) { self.lastShot = LK.ticks; LK.getSound('shoot').play(); for (var i = 0; i < self.multiShot; i++) { var bullet = new Bullet(); bullet.x = self.x + (i - (self.multiShot - 1) / 2) * 20; bullet.y = self.y - 40; bullet.damage = self.bulletDamage; bullet.lastY = bullet.y; bullets.push(bullet); game.addChild(bullet); } } }; self.upgradeFireRate = function () { if (self.fireRate < 8) { self.fireRate += 1; } }; self.upgradeDamage = function () { self.bulletDamage = Math.floor(self.bulletDamage * 1.2) + 1; }; self.upgradeMultiShot = function () { if (self.multiShot >= 5) { // Reset multishot to 1 and add 3 damage self.multiShot = 1; self.bulletDamage += 3; } else { self.multiShot += 1; } }; self.takeDamage = function () { self.health--; LK.effects.flashObject(self, 0xFF0000, 500); LK.getSound('damage').play(); if (self.health <= 0) { LK.showGameOver(); } }; self.heal = function () { if (self.health < self.maxHealth) { self.health++; } }; self.upgradeSpeed = function () { self.speed = Math.min(Math.floor(self.speed * 1.15) + 1, 15); }; return self; }); var PowerUp = Container.expand(function () { var self = Container.call(this); var powerupGraphics = self.attachAsset('powerup', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.type = 'health'; // 'health', 'speed', 'score' self.update = function () { self.y += self.speed; self.rotation += 0.05; }; return self; }); var SuperEnemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); // Make super enemy larger and different color enemyGraphics.scaleX = 1.5; enemyGraphics.scaleY = 1.5; enemyGraphics.tint = 0x8B0000; // Dark red tint to distinguish from normal enemies self.speed = 3; // Slightly slower than normal enemies self.health = 250; self.maxHealth = 250; self.lastY = 0; self.healthText = new Text2(self.health.toString(), { size: 40, // Larger text for super enemy fill: 0xFFFF00 // Yellow text to stand out }); self.healthText.anchor.set(0.5, 0.5); self.healthText.x = 0; self.healthText.y = -60; // Adjusted for larger size self.addChild(self.healthText); self.takeDamage = function (damage) { self.health -= damage; self.healthText.setText(self.health.toString()); LK.effects.flashObject(self, 0xFFFFFF, 200); if (self.health <= 0) { return true; // Enemy is dead } return false; }; self.update = function () { self.y += self.speed; }; return self; }); var Upgrade = Container.expand(function () { var self = Container.call(this); var upgradeGraphics = self.attachAsset('upgrade', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 6; self.lastY = 0; self.type = 'speed'; // 'speed', 'health', 'firerate', 'damage', 'multishot' self.update = function () { self.y += self.speed; self.rotation += 0.03; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x1a1a1a }); /**** * Game Code ****/ // Game dimensions and layout - no lanes, full width spawning var gameWidth = 2048; // Create player var player = game.addChild(new Player()); player.x = gameWidth / 2; player.y = 2732 - 200; // Game arrays var enemies = []; var superEnemies = []; var powerups = []; var upgrades = []; var bullets = []; var attackSpeedUpgrades = []; var healthUpgrades = []; // Dragging variables var isDragging = false; var dragOffset = { x: 0, y: 0 }; // Game variables var gameSpeed = 1; var enemySpawnRate = 120; var powerupSpawnRate = 180; var upgradeSpawnRate = 300; // UI Elements var scoreText = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0, 0); scoreText.x = 50; scoreText.y = 50; LK.gui.topLeft.addChild(scoreText); var healthText = new Text2('Health: 3', { size: 60, fill: 0xFF0000 }); healthText.anchor.set(1, 0); LK.gui.topRight.addChild(healthText); // Player upgrades display var upgradesText = new Text2('Upgrades:\nDamage: 1\nSpeed: 5\nMultiShot: 1\nFireRate: 30', { size: 40, fill: 0x00FFFF }); upgradesText.anchor.set(1, 0); upgradesText.x = -10; upgradesText.y = 80; LK.gui.topRight.addChild(upgradesText); // Input handling - drag mechanics game.down = function (x, y, obj) { isDragging = true; dragOffset.x = x - player.x; dragOffset.y = y - player.y; }; game.move = function (x, y, obj) { if (isDragging) { player.x = Math.max(50, Math.min(2048 - 50, x - dragOffset.x)); player.y = Math.max(50, Math.min(2732 - 50, y - dragOffset.y)); } }; game.up = function (x, y, obj) { isDragging = false; }; // Main game loop game.update = function () { // Update game speed gameSpeed += 0.001; // Update score and UI scoreText.setText('Score: ' + LK.getScore()); healthText.setText('Health: ' + player.health); upgradesText.setText('Upgrades:\nDamage: ' + player.bulletDamage + '\nSpeed: ' + player.speed + '\nMultiShot: ' + player.multiShot + '\nFireRate: ' + player.fireRate); // Calculate enemy health based on time // Every 30 seconds = 1800 ticks at 60fps (+10 health) // Every 60 seconds = 3600 ticks at 60fps (+20 health) var enemyHealthBonus30s = Math.floor(LK.ticks / 1800) * 10; var enemyHealthBonus60s = Math.floor(LK.ticks / 3600) * 20; var enemyHealthBonus = enemyHealthBonus30s + enemyHealthBonus60s; // Spawn enemies across full width if (LK.ticks % Math.max(30, enemySpawnRate - Math.floor(LK.ticks / 100)) == 0) { var enemy = new Enemy(); enemy.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries enemy.y = -50; enemy.speed = 4 + gameSpeed; enemy.health = 3 + enemyHealthBonus; enemy.maxHealth = 3 + enemyHealthBonus; enemy.healthText.setText(enemy.health.toString()); enemy.lastY = enemy.y; enemies.push(enemy); game.addChild(enemy); } // Spawn super enemies every 2 minutes (7200 ticks at 60fps) if (LK.ticks > 0 && LK.ticks % 7200 == 0) { var superEnemy = new SuperEnemy(); superEnemy.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries superEnemy.y = -50; superEnemy.speed = 3 + gameSpeed * 0.5; // Slower than normal enemies // Calculate super enemy health: 250 base + 250 for each 2-minute interval var superEnemyIntervals = Math.floor(LK.ticks / 7200); superEnemy.health = 250 + superEnemyIntervals * 250; superEnemy.maxHealth = superEnemy.health; superEnemy.healthText.setText(superEnemy.health.toString()); superEnemy.lastY = superEnemy.y; superEnemies.push(superEnemy); game.addChild(superEnemy); } // Spawn powerups across full width (much reduced rate for natural spawns) if (LK.ticks % Math.max(600, powerupSpawnRate * 5 - Math.floor(LK.ticks / 50)) == 0) { var powerup = new PowerUp(); powerup.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries powerup.y = -50; powerup.speed = 6 + gameSpeed; powerup.lastY = powerup.y; powerup.type = Math.random() < 0.7 ? 'health' : 'score'; powerups.push(powerup); game.addChild(powerup); } // Spawn upgrades across full width (much reduced rate for natural spawns) if (LK.ticks % Math.max(1200, upgradeSpawnRate * 5 - Math.floor(LK.ticks / 30)) == 0) { var upgrade = new Upgrade(); upgrade.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries upgrade.y = -50; upgrade.speed = 6 + gameSpeed; upgrade.lastY = upgrade.y; var upgradeTypes = ['speed', 'health', 'firerate', 'damage', 'multishot']; upgrade.type = upgradeTypes[Math.floor(Math.random() * upgradeTypes.length)]; upgrades.push(upgrade); game.addChild(upgrade); } // Spawn attack speed upgrades across full width (much reduced rate for natural spawns) if (LK.ticks % Math.max(1800, 2400 - Math.floor(LK.ticks / 20)) == 0) { var attackUpgrade = new AttackSpeedUpgrade(); attackUpgrade.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries attackUpgrade.y = -50; attackUpgrade.speed = 6 + gameSpeed; attackUpgrade.lastY = attackUpgrade.y; attackSpeedUpgrades.push(attackUpgrade); game.addChild(attackUpgrade); } // Auto shooting player.shoot(); // Update and check bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; // Check if bullet went off screen if (bullet.lastY > -50 && bullet.y <= -50) { bullet.destroy(); bullets.splice(i, 1); continue; } bullet.lastY = bullet.y; } // Check bullet-enemy collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (bullet.intersects(enemy)) { var enemyDead = enemy.takeDamage(bullet.damage); bullet.destroy(); bullets.splice(i, 1); if (enemyDead) { LK.setScore(LK.getScore() + 1); // Drop upgrade chance when enemy dies - total 80% chance var dropChance = Math.random(); if (dropChance < 0.25) { // 25% Fire Rate upgrade var droppedUpgrade = new AttackSpeedUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; attackSpeedUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.45) { // 20% Damage upgrade var droppedUpgrade = new Upgrade(); droppedUpgrade.type = 'damage'; droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; upgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.65) { // 20% Speed upgrade var droppedUpgrade = new Upgrade(); droppedUpgrade.type = 'speed'; droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; upgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.75) { // 10% Multishot upgrade var droppedUpgrade = new Upgrade(); droppedUpgrade.type = 'multishot'; droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; upgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } else if (dropChance < 0.80) { // 5% Health upgrade var droppedUpgrade = new HealthUpgrade(); droppedUpgrade.x = Math.max(25, Math.min(gameWidth - 25, enemy.x)); droppedUpgrade.y = enemy.y; droppedUpgrade.speed = 4; droppedUpgrade.lastY = droppedUpgrade.y; healthUpgrades.push(droppedUpgrade); game.addChild(droppedUpgrade); } enemy.destroy(); enemies.splice(j, 1); } break; } } } // Check bullet-superEnemy collisions for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; for (var j = superEnemies.length - 1; j >= 0; j--) { var superEnemy = superEnemies[j]; if (bullet.intersects(superEnemy)) { var superEnemyDead = superEnemy.takeDamage(bullet.damage); bullet.destroy(); bullets.splice(i, 1); if (superEnemyDead) { LK.setScore(LK.getScore() + 50); // More points for super enemy // Super enemies always drop multiple upgrades var droppedUpgrade1 = new AttackSpeedUpgrade(); droppedUpgrade1.x = Math.max(25, Math.min(gameWidth - 25, superEnemy.x - 30)); droppedUpgrade1.y = superEnemy.y; droppedUpgrade1.speed = 4; droppedUpgrade1.lastY = droppedUpgrade1.y; attackSpeedUpgrades.push(droppedUpgrade1); game.addChild(droppedUpgrade1); var droppedUpgrade2 = new Upgrade(); droppedUpgrade2.type = 'damage'; droppedUpgrade2.x = Math.max(25, Math.min(gameWidth - 25, superEnemy.x + 30)); droppedUpgrade2.y = superEnemy.y; droppedUpgrade2.speed = 4; droppedUpgrade2.lastY = droppedUpgrade2.y; upgrades.push(droppedUpgrade2); game.addChild(droppedUpgrade2); superEnemy.destroy(); superEnemies.splice(j, 1); } break; } } } // Update and check enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; // Check if enemy went off screen if (enemy.lastY < 2732 + 50 && enemy.y >= 2732 + 50) { enemy.destroy(); enemies.splice(i, 1); continue; } // Check collision with player if (enemy.intersects(player)) { player.takeDamage(); enemy.destroy(); enemies.splice(i, 1); continue; } enemy.lastY = enemy.y; } // Update and check super enemies for (var i = superEnemies.length - 1; i >= 0; i--) { var superEnemy = superEnemies[i]; // Check if super enemy went off screen if (superEnemy.lastY < 2732 + 50 && superEnemy.y >= 2732 + 50) { superEnemy.destroy(); superEnemies.splice(i, 1); continue; } // Check collision with player if (superEnemy.intersects(player)) { player.takeDamage(); player.takeDamage(); // Super enemies deal double damage superEnemy.destroy(); superEnemies.splice(i, 1); continue; } superEnemy.lastY = superEnemy.y; } // Update and check powerups for (var i = powerups.length - 1; i >= 0; i--) { var powerup = powerups[i]; // Check if powerup went off screen if (powerup.lastY < 2732 + 50 && powerup.y >= 2732 + 50) { powerup.destroy(); powerups.splice(i, 1); continue; } // Check collection by player if (powerup.intersects(player)) { LK.getSound('collect').play(); if (powerup.type === 'health') { player.heal(); } else if (powerup.type === 'score') { LK.setScore(LK.getScore() + 10); } LK.effects.flashObject(powerup, 0xFFFFFF, 200); powerup.destroy(); powerups.splice(i, 1); continue; } powerup.lastY = powerup.y; } // Update and check upgrades for (var i = upgrades.length - 1; i >= 0; i--) { var upgrade = upgrades[i]; // Check if upgrade went off screen if (upgrade.lastY < 2732 + 50 && upgrade.y >= 2732 + 50) { upgrade.destroy(); upgrades.splice(i, 1); continue; } // Check collection by player if (upgrade.intersects(player)) { LK.getSound('collect').play(); if (upgrade.type === 'speed') { player.upgradeSpeed(); } else if (upgrade.type === 'health') { player.maxHealth = Math.floor(player.maxHealth * 1.2) + 1; player.health = player.maxHealth; } else if (upgrade.type === 'firerate') { player.upgradeFireRate(); } else if (upgrade.type === 'damage') { player.upgradeDamage(); } else if (upgrade.type === 'multishot') { player.upgradeMultiShot(); } LK.effects.flashObject(upgrade, 0x00FF00, 300); upgrade.destroy(); upgrades.splice(i, 1); continue; } upgrade.lastY = upgrade.y; } // Update and check attack speed upgrades for (var i = attackSpeedUpgrades.length - 1; i >= 0; i--) { var attackUpgrade = attackSpeedUpgrades[i]; // Check if upgrade went off screen if (attackUpgrade.lastY < 2732 + 50 && attackUpgrade.y >= 2732 + 50) { attackUpgrade.destroy(); attackSpeedUpgrades.splice(i, 1); continue; } // Check collection by player if (attackUpgrade.intersects(player)) { LK.getSound('collect').play(); player.upgradeFireRate(); LK.effects.flashObject(attackUpgrade, 0x9c27b0, 300); attackUpgrade.destroy(); attackSpeedUpgrades.splice(i, 1); continue; } attackUpgrade.lastY = attackUpgrade.y; } // Update and check health upgrades for (var i = healthUpgrades.length - 1; i >= 0; i--) { var healthUpgrade = healthUpgrades[i]; // Check if upgrade went off screen if (healthUpgrade.lastY < 2732 + 50 && healthUpgrade.y >= 2732 + 50) { healthUpgrade.destroy(); healthUpgrades.splice(i, 1); continue; } // Check collection by player if (healthUpgrade.intersects(player)) { LK.getSound('collect').play(); player.maxHealth = Math.floor(player.maxHealth * 1.2) + 1; player.health = player.maxHealth; LK.effects.flashObject(healthUpgrade, 0x4caf50, 300); healthUpgrade.destroy(); healthUpgrades.splice(i, 1); continue; } healthUpgrade.lastY = healthUpgrade.y; } }; // Start background music LK.playMusic('background');
===================================================================
--- original.js
+++ change.js
@@ -157,8 +157,45 @@
self.rotation += 0.05;
};
return self;
});
+var SuperEnemy = Container.expand(function () {
+ var self = Container.call(this);
+ var enemyGraphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Make super enemy larger and different color
+ enemyGraphics.scaleX = 1.5;
+ enemyGraphics.scaleY = 1.5;
+ enemyGraphics.tint = 0x8B0000; // Dark red tint to distinguish from normal enemies
+ self.speed = 3; // Slightly slower than normal enemies
+ self.health = 250;
+ self.maxHealth = 250;
+ self.lastY = 0;
+ self.healthText = new Text2(self.health.toString(), {
+ size: 40,
+ // Larger text for super enemy
+ fill: 0xFFFF00 // Yellow text to stand out
+ });
+ self.healthText.anchor.set(0.5, 0.5);
+ self.healthText.x = 0;
+ self.healthText.y = -60; // Adjusted for larger size
+ self.addChild(self.healthText);
+ self.takeDamage = function (damage) {
+ self.health -= damage;
+ self.healthText.setText(self.health.toString());
+ LK.effects.flashObject(self, 0xFFFFFF, 200);
+ if (self.health <= 0) {
+ return true; // Enemy is dead
+ }
+ return false;
+ };
+ self.update = function () {
+ self.y += self.speed;
+ };
+ return self;
+});
var Upgrade = Container.expand(function () {
var self = Container.call(this);
var upgradeGraphics = self.attachAsset('upgrade', {
anchorX: 0.5,
@@ -191,8 +228,9 @@
player.x = gameWidth / 2;
player.y = 2732 - 200;
// Game arrays
var enemies = [];
+var superEnemies = [];
var powerups = [];
var upgrades = [];
var bullets = [];
var attackSpeedUpgrades = [];
@@ -254,10 +292,14 @@
// Update score and UI
scoreText.setText('Score: ' + LK.getScore());
healthText.setText('Health: ' + player.health);
upgradesText.setText('Upgrades:\nDamage: ' + player.bulletDamage + '\nSpeed: ' + player.speed + '\nMultiShot: ' + player.multiShot + '\nFireRate: ' + player.fireRate);
- // Calculate enemy health based on time (every 30 seconds = 1800 ticks at 60fps)
- var enemyHealthBonus = Math.floor(LK.ticks / 1800) * 10;
+ // Calculate enemy health based on time
+ // Every 30 seconds = 1800 ticks at 60fps (+10 health)
+ // Every 60 seconds = 3600 ticks at 60fps (+20 health)
+ var enemyHealthBonus30s = Math.floor(LK.ticks / 1800) * 10;
+ var enemyHealthBonus60s = Math.floor(LK.ticks / 3600) * 20;
+ var enemyHealthBonus = enemyHealthBonus30s + enemyHealthBonus60s;
// Spawn enemies across full width
if (LK.ticks % Math.max(30, enemySpawnRate - Math.floor(LK.ticks / 100)) == 0) {
var enemy = new Enemy();
enemy.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries
@@ -269,8 +311,23 @@
enemy.lastY = enemy.y;
enemies.push(enemy);
game.addChild(enemy);
}
+ // Spawn super enemies every 2 minutes (7200 ticks at 60fps)
+ if (LK.ticks > 0 && LK.ticks % 7200 == 0) {
+ var superEnemy = new SuperEnemy();
+ superEnemy.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries
+ superEnemy.y = -50;
+ superEnemy.speed = 3 + gameSpeed * 0.5; // Slower than normal enemies
+ // Calculate super enemy health: 250 base + 250 for each 2-minute interval
+ var superEnemyIntervals = Math.floor(LK.ticks / 7200);
+ superEnemy.health = 250 + superEnemyIntervals * 250;
+ superEnemy.maxHealth = superEnemy.health;
+ superEnemy.healthText.setText(superEnemy.health.toString());
+ superEnemy.lastY = superEnemy.y;
+ superEnemies.push(superEnemy);
+ game.addChild(superEnemy);
+ }
// Spawn powerups across full width (much reduced rate for natural spawns)
if (LK.ticks % Math.max(600, powerupSpawnRate * 5 - Math.floor(LK.ticks / 50)) == 0) {
var powerup = new PowerUp();
powerup.x = 25 + Math.random() * (gameWidth - 50); // Random position with 25px boundaries
@@ -384,8 +441,42 @@
break;
}
}
}
+ // Check bullet-superEnemy collisions
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ var bullet = bullets[i];
+ for (var j = superEnemies.length - 1; j >= 0; j--) {
+ var superEnemy = superEnemies[j];
+ if (bullet.intersects(superEnemy)) {
+ var superEnemyDead = superEnemy.takeDamage(bullet.damage);
+ bullet.destroy();
+ bullets.splice(i, 1);
+ if (superEnemyDead) {
+ LK.setScore(LK.getScore() + 50); // More points for super enemy
+ // Super enemies always drop multiple upgrades
+ var droppedUpgrade1 = new AttackSpeedUpgrade();
+ droppedUpgrade1.x = Math.max(25, Math.min(gameWidth - 25, superEnemy.x - 30));
+ droppedUpgrade1.y = superEnemy.y;
+ droppedUpgrade1.speed = 4;
+ droppedUpgrade1.lastY = droppedUpgrade1.y;
+ attackSpeedUpgrades.push(droppedUpgrade1);
+ game.addChild(droppedUpgrade1);
+ var droppedUpgrade2 = new Upgrade();
+ droppedUpgrade2.type = 'damage';
+ droppedUpgrade2.x = Math.max(25, Math.min(gameWidth - 25, superEnemy.x + 30));
+ droppedUpgrade2.y = superEnemy.y;
+ droppedUpgrade2.speed = 4;
+ droppedUpgrade2.lastY = droppedUpgrade2.y;
+ upgrades.push(droppedUpgrade2);
+ game.addChild(droppedUpgrade2);
+ superEnemy.destroy();
+ superEnemies.splice(j, 1);
+ }
+ break;
+ }
+ }
+ }
// Update and check enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
// Check if enemy went off screen
@@ -402,8 +493,27 @@
continue;
}
enemy.lastY = enemy.y;
}
+ // Update and check super enemies
+ for (var i = superEnemies.length - 1; i >= 0; i--) {
+ var superEnemy = superEnemies[i];
+ // Check if super enemy went off screen
+ if (superEnemy.lastY < 2732 + 50 && superEnemy.y >= 2732 + 50) {
+ superEnemy.destroy();
+ superEnemies.splice(i, 1);
+ continue;
+ }
+ // Check collision with player
+ if (superEnemy.intersects(player)) {
+ player.takeDamage();
+ player.takeDamage(); // Super enemies deal double damage
+ superEnemy.destroy();
+ superEnemies.splice(i, 1);
+ continue;
+ }
+ superEnemy.lastY = superEnemy.y;
+ }
// Update and check powerups
for (var i = powerups.length - 1; i >= 0; i--) {
var powerup = powerups[i];
// Check if powerup went off screen
Aşırı kızgın, hatta kafasından alevler çıkan, kübizm tarzında bir canavar çiz.. In-Game asset. 2d. High contrast. No shadows
kübizm tarzında düz bir mermi. In-Game asset. 2d. High contrast. No shadows
Aşırı kızgın, kübizm tarzında bir canavar çiz.. In-Game asset. 2d. High contrast. No shadows
Bir iyileşme efekti çiz kübizm tarzında. In-Game asset. 2d. High contrast. No shadows
Ortaçağ tarzında bir uzay gemisi çiz ve çizim tarzıda kübizm olsun. In-Game asset. 2d. High contrast. No shadows
Bir iyileşme efekti çiz sade olsun In-Game asset. 2d. High contrast. No shadows
saldırı hızını artışını gösteren bir çizim In-Game asset. 2d. High contrast. No shadows
hız artışını görselleştir ve mavi olsun In-Game asset. 2d. High contrast. No shadows
Birden fazla mermi, üzerinde + işareti olsun ve mavi olsun In-Game asset. 2d. High contrast. No shadows
Kaslı bir kol üstünde de + işareti olan bir çizim yap mavi olsun In-Game asset. 2d. High contrast. No shadows
Tekrar eden başlangıç ve son noktası aynı olan bir uzay arkaplan olarak yapmak istiyorum In-Game asset. 2d. High contrast.