User prompt
silah kulesini ekranın her yerine sürükleyebilelim.
User prompt
her namlunun marmisi ekranın üst kısmına doğru genişlesin.
User prompt
namlu sayısı her 5 wave den sonra artsın.dar açıdan geniş açıya doğru atış yapsın. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
mermi atış sayısı 4 kat artsın.
User prompt
mermiler birbiri arkasına sralansın.
User prompt
mermilerin uzaklığı 4 kat azalsın
User prompt
namlu araları her 5 levelden sonra açılsın 4 kat
User prompt
her 3 level den sonra namlular artsın.
User prompt
mermiler 4 kat hızlansın.
User prompt
mermiler daha hızlı hareket etsin.
User prompt
oyun ekranını aç.
User prompt
hatalı kodları sil.
User prompt
hala düzelmedi
User prompt
Compilation error[L14] hatasını düzelt.
User prompt
error hatalarını düzelt
User prompt
oyun hatalarını düzelt
User prompt
hataları düzelt
User prompt
Derleme hatası[L33] .Hatayı düzelt. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
14 ve 33 satır kodların hatalarını düzelt. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
14 ve 33 satır kodların hatalarını düzelt ↪💡 Consider importing and using the following plugins: @upit/tween.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Düşman Sınıfı var Enemy = Container.expand(function () { var self = Container.call(this); // Düşman grafiği var enemyGfx = self.attachAsset('enemyBox', { anchorX: 0.5, anchorY: 0.5 }); enemyGfx.width = 140; enemyGfx.height = 140; // Hız (her dalgada artmaz, sabit ve yavaş) self.speed = 1.2; // Düşman güncellemesi self.update = function () { self.y += self.speed; }; // Düşman vurulduğunda self.hit = function () { // Yok olma animasyonu tween(self, { alpha: 0, scaleX: 1.5, scaleY: 1.5 }, { duration: 180, easing: tween.cubicOut, onFinish: function onFinish() { self.destroy(); } }); }; return self; }); // Kahraman (Hero) Sınıfı var Hero = Container.expand(function () { var self = Container.call(this); // Kahraman grafiği var heroGfx = self.attachAsset('heroBox', { anchorX: 0.5, anchorY: 0.5 }); // Kahraman boyutunu ayarla (büyük ve kolay kontrol edilebilir) heroGfx.width = 180; heroGfx.height = 180; // Kahraman başlangıç canı self.hp = 1; // Kahraman ölü mü? self.isDead = false; // Kahraman vurulduğunda çağrılır self.hit = function () { if (self.isDead) return; self.isDead = true; // Kırmızıya flaşla LK.effects.flashObject(self, 0xff0000, 600); // Ekranı flaşla LK.effects.flashScreen(0xff0000, 800); // Oyun biter LK.showGameOver(); }; return self; }); // Kahraman Mermisi Sınıfı var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGfx = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); bulletGfx.width = 40; bulletGfx.height = 80; // Açılı mermi desteği için vx, vy ekle self.speed = -22; self.angle = 0; // derece cinsinden, yukarı doğru 0 self.vx = 0; self.vy = self.speed; self.setAngle = function (deg) { // Dereceyi radyana çevir var rad = deg * Math.PI / 180; self.angle = deg; self.vx = Math.sin(rad) * Math.abs(self.speed); self.vy = -Math.cos(rad) * Math.abs(self.speed); }; self.update = function () { self.x += self.vx; self.y += self.vy; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x181c2c }); /**** * Game Code ****/ // Kahraman mermisi // Düşman kutusu // Kahraman kutusu // --- Asset Tanımları (otomatik oluşturulacak) --- // --- Global Değişkenler --- var hero; var enemies = []; var heroBullets = []; var wave = 1; var waveTimer = 0; var waveInterval = 120; // 2 saniye (60fps) var enemySpeedBase = 1.2; // Daha yavaş ve sabit hız var enemyCountBase = 3; var isDragging = false; var dragOffsetX = 0; var dragOffsetY = 0; var canShoot = true; var shootInterval = 18; // Kahraman otomatik ateş hızı (her 0.3 sn) var lastShootTick = 0; var scoreTxt; var waveTxt; var powerupActive = false; var powerupType = null; var powerupTimer = 0; // --- GUI: Skor ve Dalga --- scoreTxt = new Text2('0', { size: 120, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); waveTxt = new Text2('1. Dalga', { size: 70, fill: 0xB0E0FF }); waveTxt.anchor.set(0.5, 0); LK.gui.top.addChild(waveTxt); waveTxt.y = 120; // --- Kahramanı Oluştur --- hero = new Hero(); game.addChild(hero); hero.x = 2048 / 2; hero.y = 2732 - 220; // --- Oyun Alanı Sınırları --- var minX = 100 + hero.width / 2; var maxX = 2048 - hero.width / 2; var minY = 2732 - 600; var maxY = 2732 - hero.height / 2; // --- Düşman Dalga Fonksiyonu --- function spawnWave() { var count = enemyCountBase + Math.floor(wave * 0.7); var speed = enemySpeedBase; // Her dalgada sabit hız for (var i = 0; i < count; i++) { var enemy = new Enemy(); enemy.speed = speed; // Sabit hız // Rastgele x, üstte başla var margin = 120; enemy.x = margin + Math.random() * (2048 - 2 * margin); enemy.y = -180 - Math.random() * 200; game.addChild(enemy); enemies.push(enemy); } waveTxt.setText(wave + ". Dalga"); // Trigger wave text scale animation waveTxt.scale.x = 1.3; waveTxt.scale.y = 1.3; } // --- Kahraman Otomatik Ateş Fonksiyonu --- function heroAutoShoot() { if (!canShoot || hero.isDead) return; // Düşman sayısına göre mermi yoğunluğunu artır var minBullets = 3; var maxBullets = 9; var enemyCount = enemies.length; var bulletCount = minBullets + Math.floor((maxBullets - minBullets) * Math.min(enemyCount, 20) / 20); // 3 ile 9 arası mermi, düşman sayısı 20'ye yaklaştıkça artar if (bulletCount % 2 === 0) bulletCount++; // Tek sayı olsun (simetrik yayılım için) var spread = 40 + Math.min(enemyCount * 2, 60); // Toplam yayılma açısı (derece) var startAngle = -spread / 2; var angleStep = spread / (bulletCount - 1); for (var i = 0; i < bulletCount; i++) { var angle = startAngle + i * angleStep; var bullet = new HeroBullet(); bullet.x = hero.x; bullet.y = hero.y - hero.height / 2 - 30; bullet.setAngle(angle); game.addChild(bullet); heroBullets.push(bullet); } // Play shoot sound LK.getSound('4581').play(); lastShootTick = LK.ticks; } // --- Güçlendirme Açma Fonksiyonu --- function tryActivatePowerup() { if (powerupActive) return; var score = LK.getScore(); if (score >= 20 && !powerupActive) { // İlk güçlendirme: Çift mermi powerupActive = true; powerupType = 'doubleShot'; powerupTimer = 600; // 10 saniye // Bilgilendirici efekt LK.effects.flashObject(hero, 0x00ff00, 800); } } // --- Kahraman Hareketi (Sürükle) --- game.down = function (x, y, obj) { // Sadece kahramanın alt yarısında başlat if (y < 2732 - 700) return; if (hero.isDead) return; isDragging = true; dragOffsetX = x - hero.x; dragOffsetY = y - hero.y; // Hemen pozisyonu güncelle moveHero(x, y); }; game.up = function (x, y, obj) { isDragging = false; }; function moveHero(x, y) { // Sınırları uygula var nx = Math.max(minX, Math.min(maxX, x - dragOffsetX)); var ny = Math.max(minY, Math.min(maxY, y - dragOffsetY)); hero.x = nx; hero.y = ny; } // --- Oyun Alanı Hareketi --- game.move = function (x, y, obj) { if (isDragging && !hero.isDead) { moveHero(x, y); } }; // --- Oyun Güncelleme --- game.update = function () { // Kahraman otomatik ateş if (!hero.isDead && LK.ticks - lastShootTick > shootInterval) { if (powerupActive && powerupType === 'doubleShot') { // Güçlendirme: Düşman sayısına göre DAHA FAZLA mermi ve daha geniş yayılım var minBullets = 5; var maxBullets = 15; var enemyCount = enemies.length; var bulletCount = minBullets + Math.floor((maxBullets - minBullets) * Math.min(enemyCount, 30) / 30); // 5 ile 15 arası mermi, düşman sayısı 30'a yaklaştıkça artar if (bulletCount % 2 === 0) bulletCount++; // Tek sayı olsun var spread = 80 + Math.min(enemyCount * 3, 100); // Toplam yayılma açısı (derece) var startAngle = -spread / 2; var angleStep = spread / (bulletCount - 1); for (var i = 0; i < bulletCount; i++) { var angle = startAngle + i * angleStep; var bullet = new HeroBullet(); bullet.x = hero.x; bullet.y = hero.y - hero.height / 2 - 30; bullet.setAngle(angle); game.addChild(bullet); heroBullets.push(bullet); } // Play shoot sound LK.getSound('4581').play(); lastShootTick = LK.ticks; } else { heroAutoShoot(); } } // Güçlendirme süresi if (powerupActive) { powerupTimer--; if (powerupTimer <= 0) { powerupActive = false; powerupType = null; } } // Mermileri güncelle for (var i = heroBullets.length - 1; i >= 0; i--) { var b = heroBullets[i]; b.update(); // Ekran dışıysa sil if (b.y < -100) { b.destroy(); heroBullets.splice(i, 1); continue; } // Düşmanla çarpışma for (var j = enemies.length - 1; j >= 0; j--) { var e = enemies[j]; if (b.intersects(e)) { // Düşmanı yok et e.hit(); enemies.splice(j, 1); // Skor artır LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // Güçlendirme kontrolü tryActivatePowerup(); // Mermiyi yok et b.destroy(); heroBullets.splice(i, 1); break; } } } // Düşmanları güncelle for (var k = enemies.length - 1; k >= 0; k--) { var en = enemies[k]; en.update(); // Kahramana çarptı mı? if (!hero.isDead && en.intersects(hero)) { hero.hit(); break; } // Ekran dışıysa sil if (en.y > 2732 + 100) { en.destroy(); enemies.splice(k, 1); } } // Dalga kontrolü if (enemies.length === 0 && !hero.isDead) { wave++; spawnWave(); } // Dalga yazısı animasyonu (her dalga başında kısa büyüt) if (waveTxt.scale.x > 1) { waveTxt.scale.x -= 0.02; waveTxt.scale.y -= 0.02; if (waveTxt.scale.x < 1) { waveTxt.scale.x = 1; waveTxt.scale.y = 1; } } }; // --- Müzik Başlat --- LK.playMusic('1a439'); // --- İlk Dalga Başlat --- spawnWave();
===================================================================
--- original.js
+++ change.js
@@ -167,12 +167,12 @@
game.addChild(enemy);
enemies.push(enemy);
}
waveTxt.setText(wave + ". Dalga");
+ // Trigger wave text scale animation
+ waveTxt.scale.x = 1.3;
+ waveTxt.scale.y = 1.3;
}
-// Trigger wave text scale animation
-waveTxt.scale.x = 1.3;
-waveTxt.scale.y = 1.3;
// --- Kahraman Otomatik Ateş Fonksiyonu ---
function heroAutoShoot() {
if (!canShoot || hero.isDead) return;
// Düşman sayısına göre mermi yoğunluğunu artır
uzay aracı olsun . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
ahtapot şekilli canavar olsun. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
uzay aracı olsun . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat