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
/**** * Classes ****/ var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemyBox', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 2; self.update = function () { self.y += self.speed; }; return self; }); // Set background var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('heroBox', { anchorX: 0.5, anchorY: 0.5 }); self.fireRate = 20; // Fire every 20 ticks self.lastFire = 0; self.update = function () { // Auto fire bullets if (LK.ticks - self.lastFire > self.fireRate) { self.lastFire = LK.ticks; // Fire bullet var bullet = new HeroBullet(); bullet.x = self.x; bullet.y = self.y - 50; heroBullets.push(bullet); game.addChild(bullet); } }; return self; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('heroBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -8; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Set background game.setBackgroundColor(0x001122); // Game variables var hero; var enemies = []; var heroBullets = []; var waveNumber = 1; var enemiesSpawned = 0; var enemiesPerWave = 5; var spawnTimer = 0; var spawnRate = 60; // Spawn every 60 ticks initially var dragNode = null; // Create hero hero = new Hero(); hero.x = 2048 / 2; hero.y = 2732 - 200; game.addChild(hero); // Score display var scoreTxt = new Text2('Score: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Wave display var waveTxt = new Text2('Wave: 1', { size: 60, fill: 0xFFFF00 }); waveTxt.anchor.set(0, 0); waveTxt.x = 50; waveTxt.y = 50; LK.gui.topLeft.addChild(waveTxt); // Touch controls game.down = function (x, y, obj) { dragNode = hero; hero.x = x; }; game.move = function (x, y, obj) { if (dragNode) { dragNode.x = Math.max(90, Math.min(2048 - 90, x)); } }; game.up = function (x, y, obj) { dragNode = null; }; // Main game loop game.update = function () { // Spawn enemies spawnTimer++; if (spawnTimer >= spawnRate && enemiesSpawned < enemiesPerWave) { spawnTimer = 0; var enemy = new Enemy(); enemy.x = Math.random() * (2048 - 200) + 100; enemy.y = -100; enemy.speed = 2 + waveNumber * 0.5; // Increase speed with waves enemies.push(enemy); game.addChild(enemy); enemiesSpawned++; } // Update and check bullet collisions for (var i = heroBullets.length - 1; i >= 0; i--) { var bullet = heroBullets[i]; // Remove bullets that go off screen if (bullet.y < -50) { bullet.destroy(); heroBullets.splice(i, 1); continue; } // Check collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (bullet.intersects(enemy)) { // Enemy hit LK.setScore(LK.getScore() + 10); scoreTxt.setText('Score: ' + LK.getScore()); // Remove bullet and enemy bullet.destroy(); enemy.destroy(); heroBullets.splice(i, 1); enemies.splice(j, 1); break; } } } // Update and check enemy collisions with hero for (var k = enemies.length - 1; k >= 0; k--) { var enemy = enemies[k]; // Check if enemy reached hero if (enemy.intersects(hero)) { LK.showGameOver(); return; } // Remove enemies that go off screen if (enemy.y > 2732 + 100) { enemy.destroy(); enemies.splice(k, 1); } } // Check if wave is complete if (enemies.length === 0 && enemiesSpawned >= enemiesPerWave) { waveNumber++; waveTxt.setText('Wave: ' + waveNumber); enemiesSpawned = 0; enemiesPerWave = Math.min(5 + waveNumber, 15); // Increase enemies per wave spawnRate = Math.max(30, 60 - waveNumber * 2); // Decrease spawn rate } }; // Start background music LK.playMusic('1a439');
===================================================================
--- original.js
+++ change.js
@@ -1,342 +1,171 @@
/****
-* 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', {
+ var enemyGraphics = 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.speed = 2;
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ı
+// Set background
var Hero = Container.expand(function () {
var self = Container.call(this);
- // Kahraman grafiği
- var heroGfx = self.attachAsset('heroBox', {
+ var heroGraphics = 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();
+ self.fireRate = 20; // Fire every 20 ticks
+ self.lastFire = 0;
+ self.update = function () {
+ // Auto fire bullets
+ if (LK.ticks - self.lastFire > self.fireRate) {
+ self.lastFire = LK.ticks;
+ // Fire bullet
+ var bullet = new HeroBullet();
+ bullet.x = self.x;
+ bullet.y = self.y - 50;
+ heroBullets.push(bullet);
+ game.addChild(bullet);
+ }
};
return self;
});
-// Kahraman Mermisi Sınıfı
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
- var bulletGfx = self.attachAsset('heroBullet', {
+ var bulletGraphics = 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.speed = -8;
self.update = function () {
- self.x += self.vx;
- self.y += self.vy;
+ self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x181c2c
+ backgroundColor: 0x000000
});
/****
* Game Code
****/
-// --- Global Değişkenler ---
-// --- Asset Tanımları (otomatik oluşturulacak) ---
-// Kahraman kutusu
-// Düşman kutusu
-// Kahraman mermisi
+// Set background
+game.setBackgroundColor(0x001122);
+// Game variables
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,
+var waveNumber = 1;
+var enemiesSpawned = 0;
+var enemiesPerWave = 5;
+var spawnTimer = 0;
+var spawnRate = 60; // Spawn every 60 ticks initially
+var dragNode = null;
+// Create hero
+hero = new Hero();
+hero.x = 2048 / 2;
+hero.y = 2732 - 200;
+game.addChild(hero);
+// Score display
+var scoreTxt = new Text2('Score: 0', {
+ size: 80,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
-waveTxt = new Text2('1. Dalga', {
- size: 70,
- fill: 0xB0E0FF
+// Wave display
+var waveTxt = new Text2('Wave: 1', {
+ size: 60,
+ fill: 0xFFFF00
});
-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) ---
+waveTxt.anchor.set(0, 0);
+waveTxt.x = 50;
+waveTxt.y = 50;
+LK.gui.topLeft.addChild(waveTxt);
+// Touch controls
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);
+ dragNode = hero;
+ hero.x = x;
};
-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);
+ if (dragNode) {
+ dragNode.x = Math.max(90, Math.min(2048 - 90, x));
}
};
-// --- Oyun Güncelleme ---
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// Main game loop
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();
- }
+ // Spawn enemies
+ spawnTimer++;
+ if (spawnTimer >= spawnRate && enemiesSpawned < enemiesPerWave) {
+ spawnTimer = 0;
+ var enemy = new Enemy();
+ enemy.x = Math.random() * (2048 - 200) + 100;
+ enemy.y = -100;
+ enemy.speed = 2 + waveNumber * 0.5; // Increase speed with waves
+ enemies.push(enemy);
+ game.addChild(enemy);
+ enemiesSpawned++;
}
- // Güçlendirme süresi
- if (powerupActive) {
- powerupTimer--;
- if (powerupTimer <= 0) {
- powerupActive = false;
- powerupType = null;
- }
- }
- // Mermileri güncelle
+ // Update and check bullet collisions
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();
+ var bullet = heroBullets[i];
+ // Remove bullets that go off screen
+ if (bullet.y < -50) {
+ bullet.destroy();
heroBullets.splice(i, 1);
continue;
}
- // Düşmanla çarpışma
+ // Check collision with enemies
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();
+ var enemy = enemies[j];
+ if (bullet.intersects(enemy)) {
+ // Enemy hit
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ // Remove bullet and enemy
+ bullet.destroy();
+ enemy.destroy();
heroBullets.splice(i, 1);
+ enemies.splice(j, 1);
break;
}
}
}
- // Düşmanları güncelle
+ // Update and check enemy collisions with hero
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;
+ var enemy = enemies[k];
+ // Check if enemy reached hero
+ if (enemy.intersects(hero)) {
+ LK.showGameOver();
+ return;
}
- // Ekran dışıysa sil
- if (en.y > 2732 + 100) {
- en.destroy();
+ // Remove enemies that go off screen
+ if (enemy.y > 2732 + 100) {
+ enemy.destroy();
enemies.splice(k, 1);
}
}
- // Dalga kontrolü
- if (enemies.length === 0 && !hero.isDead) {
- wave++;
- spawnWave();
+ // Check if wave is complete
+ if (enemies.length === 0 && enemiesSpawned >= enemiesPerWave) {
+ waveNumber++;
+ waveTxt.setText('Wave: ' + waveNumber);
+ enemiesSpawned = 0;
+ enemiesPerWave = Math.min(5 + waveNumber, 15); // Increase enemies per wave
+ spawnRate = Math.max(30, 60 - waveNumber * 2); // Decrease spawn rate
}
- // 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();
\ No newline at end of file
+// Start background music
+LK.playMusic('1a439');
\ No newline at end of file
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