Code edit (1 edits merged)
Please save this source code
User prompt
create a second counter text middle of the screen
User prompt
make it 0.15 second and make it move to left with almost fast as enemy
User prompt
make partical effects life time 0.1 second
User prompt
add a grey particle efect when enemy die
User prompt
add a text middle of the screen and make it big
User prompt
add a counter text middle of screen
User prompt
weapon fırlatmak için gereken süreyi 0.05 saniye azalt
User prompt
weapon atmak için gereken duration zamanını 0.1 saniye azalt
User prompt
flyin enemy spawn sayısı aynı kalsın enemy sayısı daha fazla spawn olsun
User prompt
biraz daha az enemy spawn olsun
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'x')' in or related to this line: 'if (flyinEnemies[n].x < -50) {' Line Number: 298
User prompt
make flyin enemy die when weapon touches flyin enemy
User prompt
Aşağıdaki adımları uygulayarak, oyuncunun bir flying enemy ile temas ettiğinde normal düşmanla temasta olduğu gibi oyunu sonlandırmasını sağlayabilirsiniz: Flying enemy'leri saklamak için global bir dizi oluşturun. Böylece her spawn ettiğiniz flying enemy'yi bu diziye ekleyerek, hepsinde collision kontrolü yapabilirsiniz. spawnFlyinEnemy fonksiyonunu güncelleyin. Yeni oluşturulan flying enemy örneğini global diziye ekleyin. game.update fonksiyonunda flying enemy’ler için de collision kontrolü yapın. Normal düşmanlar için yaptığınız gibi, her flying enemy için oyuncuyla kesişim kontrolü yaparak oyun sonu efektini tetikleyin. Aşağıda, gerekli güncellemeleri içeren kod örneği yer alıyor: js Kopyala Düzenle // Global flying enemy dizisi var flyinEnemies = []; // ... (diğer kodlar) // spawnFlyinEnemy fonksiyonunu güncelleyin function spawnFlyinEnemy() { // 1.5-3 saniye arası rastgele gecikme var delay = Math.random() * 1500 + 1500; LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); flyinEnemy.x = 2048; flyinEnemy.y = 400 + 50; // 50 piksel aşağı taşı game.addChild(flyinEnemy); flyinEnemies.push(flyinEnemy); // Bir sonraki flying enemy spawn için fonksiyonu tekrar çağır spawnFlyinEnemy(); }, delay); } // Oyun başlarken bir kere tetikle spawnFlyinEnemy(); // ... (diğer kodlar) // Güncelleme fonksiyonu içinde enemy collision kontrolü game.update = function () { // Arka planı güncelle scrollingBackground.update(); // Oyuncuyu güncelle player.update(); // Normal düşmanları spawnla ve güncelle enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var canSpawn = true; for (var i = 0; i < enemies.length; i++) { if (enemies[i].x > 1800) { canSpawn = false; break; } } if (canSpawn) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); } enemySpawnCounter = 0; enemySpawnInterval = Math.floor(Math.random() * 100) + 30; } // Normal düşman güncellemesi ve collision kontrolü for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } // Weapon ile collision kontrolü for (var k = game.children.length - 1; k >= 0; k--) { var child = game.children[k]; if (child instanceof Weapon && child.intersects(enemies[j])) { var coin = LK.getAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); coin.x = enemies[j].x; coin.y = enemies[j].y; coin.velocity = 5; coin.update = function () { this.x -= this.velocity; if (this.x < -100) { this.destroy(); coins.splice(coins.indexOf(this), 1); } }; game.addChild(coin); coins.push(coin); enemies[j].destroy(); child.destroy(); enemies.splice(j, 1); break; } } } // Flying enemy'leri güncelle ve collision kontrolü yap for (var n = flyinEnemies.length - 1; n >= 0; n--) { flyinEnemies[n].update(); if (player.intersects(flyinEnemies[n])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } // Ekranın dışına çıkan flying enemy'leri diziden kaldır if (flyinEnemies[n].x < -50) { flyinEnemies[n].destroy(); flyinEnemies.splice(n, 1); } } // Coin'lerin güncellenmesi ve oyuncu ile çarpışma kontrolü for (var m = coins.length - 1; m >= 0; m--) { var coin = coins[m]; coin.update(); if (player.intersects(coin)) { coinCount++; coinCounter.setText(coinCount.toString()); coin.destroy(); coins.splice(m, 1); } } }; Bu güncellemelerle artık oyuncu, normal düşmanlarla veya flying enemy’lerle temas ettiğinde aynı şekilde ekran kırmızısı efekt ve oyun sonu işlemlerinin gerçekleşmesini sağlayabilirsiniz.
User prompt
Please fix the bug: 'ReferenceError: flyinEnemy is not defined' in or related to this line: 'if (player.intersects(enemies[j]) || player.intersects(flyinEnemy)) {' Line Number: 220
User prompt
kill the character when touched flyin enemy
User prompt
Adjust FlyinEnemy spawn y-coordinate to be 50 pixels lower
User prompt
FlyinEnemy sınıfında y koordinatını başlarken 75 piksel aşağı çekmek istiyorsan, spawnFlyinEnemy fonksiyonunda y değerini güncelleyebilirsin. Güncellenmiş Kısım: js Kopyala Düzenle function spawnFlyinEnemy() { var delay = Math.random() * 1500 + 1500; LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); flyinEnemy.x = 2048; flyinEnemy.y = 400 + 75; // 75 piksel aşağı taşı game.addChild(flyinEnemy); spawnFlyinEnemy(); }, delay); } Bu değişiklik, uçan düşmanların başlangıç konumunu 75 piksel aşağıya kaydırır. Eğer sadece belirli bir koşulda aşağı çekmek istiyorsan, Math.random() kullanarak bazılarında uygulayabilirsin.
User prompt
Aşağıdaki örnekte, farklı bir yöntem olarak flyin enemy’nin anchor noktasını (anchorY) üst kısımda olacak şekilde ayarlıyoruz. Böylece y koordinatı doğrudan sprite’ın üst kısmını temsil eder. Ardından spawn fonksiyonunda flyin enemy’nin y koordinatını 400 olarak belirleyerek, enemy’nin ekranın üstünden 400 pixel aşağıda spawn olmasını sağlıyoruz: js Kopyala Düzenle // Define a class for flying enemies (anchorY=0) var FlyinEnemy = Container.expand(function () { var self = Container.call(this); var flyinEnemyGraphics = self.attachAsset('flyin_enemy', { anchorX: 0.5, anchorY: 0 // Üst kısmı referans alıyoruz }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Spawn fonksiyonu: 1.5-3 saniye arası rastgele gecikme ile enemy spawnlanıyor function spawnFlyinEnemy() { var delay = Math.random() * 1500 + 1500; // 1500-3000 ms delay LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); // Ekranın en sağında spawn (x = 2048) flyinEnemy.x = 2048; // Sprite'ın üst kısmı 400 pixel aşağıda (y = 400) flyinEnemy.y = 400; game.addChild(flyinEnemy); // Bir sonraki spawn için fonksiyonu tekrar çağır spawnFlyinEnemy(); }, delay); } // Oyun başlarken bir kere tetikle spawnFlyinEnemy(); Bu yöntemle: Anchor Ayarı: Flyin enemy’nin anchorY’sini 0 yaparak y koordinatının sprite’ın üst kısmını temsil etmesini sağlıyoruz. Spawn Pozisyonu: flyin enemy, ekranın en sağında (x = 2048) ve üst kısmı 400 piksel aşağıda (y = 400) spawnlanır. Rastgele Gecikme: Spawn aralığı 1.5 ile 3 saniye arasında rastgele ayarlanır. Bu şekilde istediğin konumlamayı elde edebilirsin.
User prompt
Please fix the bug: 'Timeout.tick error: flyinEnemyGraphics is not defined' in or related to this line: 'flyinEnemy.y = -flyinEnemyGraphics.height / 2;' Line Number: 151
User prompt
başka bir yöntem kullanarak flyinenemyi ekranın üstünden spawnlat
User prompt
Sorunu çözmek için iki kontrol yapalım: Anchor Ayarı: Eğer flyin enemy asset’in anchor noktası 0.5 olarak ayarlanmışsa, y koordinatını ayarladığınızda asset’in orta noktası belirlediğiniz değere denk gelir. Yani, js Kopyala Düzenle flyinEnemy.y = 2732 / 2 - 400; ifadesi, asset’in ortasını 1366 - 400 = 966 yapar. Eğer asset’in üst kısmının 966 olmasını istiyorsanız, anchorY’yi 0 olarak ayarlamalısınız. Spawn Konumunun Doğru Ayarlandığından Emin Olun: Eğer flyin enemy’nin ekranın en sağında ve üst kısmı 400 pixel yukarıda (örneğin ekranın ortasının 400 pixel yukarısı) görünmesini istiyorsanız, spawn fonksiyonunuzda y koordinatını doğru belirlediğinizden emin olun. Aşağıda iki seçenek var: Seçenek 1: Asset’in Orta Noktasını 400 Pixel Yukarı Kaydırmak Eğer asset’in orta noktası 400 pixel yukarıda olmalıysa, mevcut kodunuz doğru: js Kopyala Düzenle flyinEnemy.y = (2732 / 2) - 400; // Orta nokta: 1366 - 400 = 966 Bu durumda asset’in merkezinin 966 olacağını unutmayın. Seçenek 2: Asset’in Üst Kısmı 400 Pixel Yukarıda Görünsün Eğer asset’in üst kısmının 400 pixel yukarıda (örneğin ekranın üst kısmına daha yakın) görünmesini istiyorsanız, asset’in anchorY değerini 0 yaparak yukarıdaki ayarı uygulayabilirsiniz: js Kopyala Düzenle var FlyinEnemy = Container.expand(function () { var self = Container.call(this); // Anchor ayarını üst kısım için değiştirdik var flyinEnemyGraphics = self.attachAsset('flyin_enemy', { anchorX: 0.5, anchorY: 0 // Üst kısım referans alınır }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); Spawn fonksiyonunda da: js Kopyala Düzenle function spawnFlyinEnemy() { var delay = Math.random() * 1500 + 1500; // 1500-3000 ms arası gecikme LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); flyinEnemy.x = 2048; // Asset'in üst kısmı, y değeri belirlediğimiz konumda olsun flyinEnemy.y = (2732 / 2) - 400; game.addChild(flyinEnemy); spawnFlyinEnemy(); }, delay); } Bu ayarlarla, flyin enemy spawn edildiğinde asset’in üst kısmı (anchorY=0) 1366 - 400 = 966 piksele yerleşecektir. Böylece asset, ekranın üst kısmına daha yakın görünecektir. Hangi yöntemi kullanacağınız, oyunda nasıl bir görünüm elde etmek istediğinize bağlı. Eğer hâlâ sorun devam ediyorsa, spawn işlemi sırasında y koordinatını kontrol etmek için console.log ekleyerek değerin doğru ayarlandığından emin olabilirsiniz: js Kopyala Düzenle console.log("Flyin enemy spawn y: " + flyinEnemy.y); Bu adımlarla istediğiniz pozisyonlamayı sağlamanız gerekir.
User prompt
400 pixel yukarı çıkar flyin enemy i
User prompt
flyin enemy 500 pixel yukarıdan spawn olmaya başlasın
User prompt
flyin enemy 300 pixel yukarıda spawn olsun
/**** * Classes ****/ // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for flying enemies var FlyinEnemy = Container.expand(function () { var self = Container.call(this); var flyinEnemyGraphics = self.attachAsset('flyin_enemy', { anchorX: 0.5, anchorY: 0 }); self.speed = 5; self.update = function () { self.x -= self.speed; if (self.x < -50) { self.destroy(); } }; }); // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 40; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.7; // Gravity etkisi if (self.y >= 2732 / 2) { self.y = 2732 / 2; // Zemin seviyesi self.isJumping = false; self.velocityY = 0; } } }; self.jump = function () { if (!self.isJumping) { self.isJumping = true; self.velocityY = -self.jumpHeight; } }; }); // ScrollingBackground sınıfı: orijinal ve mirrored arka planı içerir var ScrollingBackground = Container.expand(function () { var self = Container.call(this); // Orijinal arka plan (sağa bakan) self.bg1 = LK.getAsset('background', { anchorX: 0, anchorY: 0 }); self.bg1.x = 0; self.bg1.y = 0; self.addChild(self.bg1); // Mirrored arka plan (flipX ile ters çevrilmiş, sola bakan) self.bg2 = LK.getAsset('background', { anchorX: 1, anchorY: 0 }); self.bg2.scaleX = -1; self.bg2.x = self.bg1.width; self.bg2.y = 0; self.addChild(self.bg2); // Arka plan kayma hızı self.speed = 2; self.update = function () { self.bg1.x -= self.speed; self.bg2.x -= self.speed; if (self.bg1.x + self.bg1.width <= 0) { self.bg1.x = self.bg2.x + self.bg2.width; } if (self.bg2.x + self.bg2.width <= 0) { self.bg2.x = self.bg1.x + self.bg1.width; } }; }); // Define a class for the weapon var Weapon = Container.expand(function () { var self = Container.call(this); var weaponGraphics = self.attachAsset('weapon', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 40; self.update = function () { self.x += self.directionX * self.speed; self.y += self.directionY * self.speed; weaponGraphics.rotation += 0.3; if (Math.abs(game.down.x - self.x) < self.speed && Math.abs(game.down.y - self.y) < self.speed) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Gökyüzü mavisi arka plan }); /**** * Game Code ****/ // Global diziler ve değişkenler var flyinEnemies = []; // Flying enemy'ler için global dizi var coinCount = 0; // Toplanan coin sayısı var coins = []; // Coin asset'leri için global dizi // Arka plan ve oyuncu nesnelerini initialize et var scrollingBackground = new ScrollingBackground(); game.addChild(scrollingBackground); var player = game.addChild(new Player()); player.x = 2048 / 2 - 200; player.y = 2732 / 2; // Düşman dizisi ve spawn kontrol değişkenleri var enemies = []; var enemySpawnInterval = 50; var enemySpawnCounter = 0; // Score için (örneğin normal düşman skoru) text var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Coin counter, ekranın ortasında gösterilecek şekilde ayarlandı var coinCounter = new Text2('0', { size: 100, fill: 0xFFFFFF }); LK.gui.center.addChild(coinCounter); coinCounter.x = 2048 / 2 - coinCounter.width / 2; coinCounter.y = 2732 / 2 - coinCounter.height / 2; // Flying enemy spawn fonksiyonu (welcome text kaldırıldı) function spawnFlyinEnemy() { var delay = Math.random() * 2000 + 2000; // 2000-4000 ms delay LK.setTimeout(function () { var flyinEnemy = new FlyinEnemy(); flyinEnemy.x = 2048; flyinEnemy.y = 400 + 50; game.addChild(flyinEnemy); flyinEnemies.push(flyinEnemy); spawnFlyinEnemy(); }, delay); } // Oyun başladığında flying enemy spawn işlemini tetikle spawnFlyinEnemy(); game.update = function () { // Arka plan ve oyuncu güncelleme scrollingBackground.update(); player.update(); // Normal düşman spawn ve güncelleme enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var canSpawn = true; for (var i = 0; i < enemies.length; i++) { if (enemies[i].x > 1800) { canSpawn = false; break; } } if (canSpawn) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); } enemySpawnCounter = 0; enemySpawnInterval = Math.floor(Math.random() * 100) + 30; } // Normal düşmanlar için collision kontrolü for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } // Weapon ile çarpışma kontrolü for (var k = game.children.length - 1; k >= 0; k--) { var child = game.children[k]; if (child instanceof Weapon && child.intersects(enemies[j])) { var coin = LK.getAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); coin.x = enemies[j].x; coin.y = enemies[j].y; coin.velocity = 5; coin.update = function () { this.x -= this.velocity; if (this.x < -100) { this.destroy(); coins.splice(coins.indexOf(this), 1); } }; game.addChild(coin); coins.push(coin); // Particle efektini oluştur var particleEffect = LK.getAsset('particle', { anchorX: 0.5, anchorY: 0.5, color: 0x808080 }); particleEffect.x = enemies[j].x; particleEffect.y = enemies[j].y; game.addChild(particleEffect); LK.setTimeout(function () { particleEffect.destroy(); particleEffect.update = function () { this.x -= 5; }; }, 150); enemies[j].destroy(); child.destroy(); enemies.splice(j, 1); break; } } } // Flying enemy'ler için collision kontrolü for (var n = flyinEnemies.length - 1; n >= 0; n--) { flyinEnemies[n].update(); if (player.intersects(flyinEnemies[n])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } for (var k = game.children.length - 1; k >= 0; k--) { var child = game.children[k]; if (child instanceof Weapon && child.intersects(flyinEnemies[n])) { var coin = LK.getAsset('coin', { anchorX: 0.5, anchorY: 0.5 }); coin.x = flyinEnemies[n].x; coin.y = flyinEnemies[n].y; coin.velocity = 5; coin.update = function () { this.x -= this.velocity; if (this.x < -100) { this.destroy(); coins.splice(coins.indexOf(this), 1); } }; game.addChild(coin); coins.push(coin); var particleEffect = LK.getAsset('particle', { anchorX: 0.5, anchorY: 0.5, color: 0x808080 }); particleEffect.x = flyinEnemies[n].x; particleEffect.y = flyinEnemies[n].y; game.addChild(particleEffect); LK.setTimeout(function () { particleEffect.destroy(); particleEffect.update = function () { this.x -= 5; }; }, 150); flyinEnemies[n].destroy(); child.destroy(); flyinEnemies.splice(n, 1); break; } } if (flyinEnemies[n] && flyinEnemies[n].x < -50) { flyinEnemies[n].destroy(); flyinEnemies.splice(n, 1); } } // Coin'lerin güncellenmesi ve oyuncu ile çarpışma kontrolü for (var m = coins.length - 1; m >= 0; m--) { var coin = coins[m]; coin.update(); if (player.intersects(coin)) { coinCount++; // Her coin alımında 1 artar coinCounter.setText(coinCount.toString()); coin.destroy(); coins.splice(m, 1); } } }; // Handle player jump ve weapon fırlatma game.down = function (x, y, obj) { if (player.isJumping) { if (!game.lastWeaponTime || Date.now() - game.lastWeaponTime > 350) { var weapon = new Weapon(); weapon.x = player.x; weapon.y = player.y; var dx = x - weapon.x; var dy = y - weapon.y; var distance = Math.sqrt(dx * dx + dy * dy); weapon.directionX = dx / distance; weapon.directionY = dy / distance; game.addChild(weapon); LK.setTimeout(function () { weapon.destroy(); }, 9000); game.lastWeaponTime = Date.now(); } } player.jump(); };
===================================================================
--- original.js
+++ change.js
@@ -62,9 +62,9 @@
});
// ScrollingBackground sınıfı: orijinal ve mirrored arka planı içerir
var ScrollingBackground = Container.expand(function () {
var self = Container.call(this);
- // Orijinal arka plan (saga bakan)
+ // Orijinal arka plan (sağa bakan)
self.bg1 = LK.getAsset('background', {
anchorX: 0,
anchorY: 0
});
@@ -75,26 +75,20 @@
self.bg2 = LK.getAsset('background', {
anchorX: 1,
anchorY: 0
});
- // scaleX'i -1 yaparak yatayda ters çeviriyoruz
self.bg2.scaleX = -1;
- // bg1'in sağ kenarının hemen yanında yerleştiriyoruz
self.bg2.x = self.bg1.width;
self.bg2.y = 0;
self.addChild(self.bg2);
// Arka plan kayma hızı
self.speed = 2;
self.update = function () {
- // Her iki arka planı sola doğru kaydır
self.bg1.x -= self.speed;
self.bg2.x -= self.speed;
- // bg1 ekran dışına çıktıysa (tamamen sol tarafta kalırsa)
if (self.bg1.x + self.bg1.width <= 0) {
- // bg1'in sağ tarafını, bg2'nin hemen sağına konumlandır
self.bg1.x = self.bg2.x + self.bg2.width;
}
- // bg2 için de aynı işlemi yap
if (self.bg2.x + self.bg2.width <= 0) {
self.bg2.x = self.bg1.x + self.bg1.width;
}
};
@@ -107,14 +101,11 @@
anchorY: 0.5
});
self.speed = 40;
self.update = function () {
- // Weapon'ın yönünü kullanarak hedefe doğru hareket ettir
self.x += self.directionX * self.speed;
self.y += self.directionY * self.speed;
- // Weapon'ı yönüne göre döndür
weaponGraphics.rotation += 0.3;
- // Hedefe yaklaştıysa yok et
if (Math.abs(game.down.x - self.x) < self.speed && Math.abs(game.down.y - self.y) < self.speed) {
self.destroy();
}
};
@@ -129,89 +120,62 @@
/****
* Game Code
****/
-function spawnFlyinEnemy() {
- // Add a large text in the middle of the screen
- var middleText = new Text2('Welcome to the Game!', {
- size: 200,
- fill: 0xFFFFFF
- });
- middleText.anchor.set(0.5, 0.5);
- middleText.x = 2048 / 2;
- middleText.y = 2732 / 2;
- LK.gui.center.addChild(middleText);
- // Add a second counter text in the middle of the screen
- var secondCounterText = new Text2('0', {
- size: 150,
- fill: 0xFFFFFF
- });
- secondCounterText.anchor.set(0.5, 0.5);
- secondCounterText.x = 2048 / 2;
- secondCounterText.y = 2732 / 2 + 100; // Position it slightly below the middle text
- LK.gui.center.addChild(secondCounterText);
- var delay = Math.random() * 2000 + 2000; // 2000-4000 ms delay
- LK.setTimeout(function () {
- var flyinEnemy = new FlyinEnemy();
- // Ekranın en sağında spawn (x = 2048)
- flyinEnemy.x = 2048;
- // Normal düşmanın olduğu orta noktadan 200 piksel yukarı: y = (2732/2) - 200
- flyinEnemy.y = 400 + 50; // 50 piksel aşağı taşı
- game.addChild(flyinEnemy);
- flyinEnemies.push(flyinEnemy);
- // Bir sonraki flyin enemy’yi yine 1-2 saniye arası rastgele gecikme ile çağır
- spawnFlyinEnemy();
- }, delay);
-}
-// Oyun başlarken bir kere tetikle
-spawnFlyinEnemy();
-// Global flying enemy dizisi
-var flyinEnemies = [];
-// Global coin counter değişkeni
-var coinCount = 0;
-// Global coin dizisi
-var coins = [];
-// Initialize enemies & background
+// Global diziler ve değişkenler
+var flyinEnemies = []; // Flying enemy'ler için global dizi
+var coinCount = 0; // Toplanan coin sayısı
+var coins = []; // Coin asset'leri için global dizi
+// Arka plan ve oyuncu nesnelerini initialize et
var scrollingBackground = new ScrollingBackground();
game.addChild(scrollingBackground);
-// Initialize player
var player = game.addChild(new Player());
-player.x = 2048 / 2 - 200; // Oyuncuyu daha sola yerleştir
+player.x = 2048 / 2 - 200;
player.y = 2732 / 2;
-// Initialize enemy dizisi
+// Düşman dizisi ve spawn kontrol değişkenleri
var enemies = [];
-var flyinEnemy; // Define flyinEnemy in the global scope
-var enemySpawnInterval = 50; // Reduced interval for more frequent enemy spawning
+var enemySpawnInterval = 50;
var enemySpawnCounter = 0;
-// Score için Text2 nesnesi
+// Score için (örneğin normal düşman skoru) text
var scoreText = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
LK.gui.top.addChild(scoreText);
scoreText.x = 2048 / 2;
scoreText.y = 0;
-// Ekranın üst orta kısmına coin counter ekleyelim
+// Coin counter, ekranın ortasında gösterilecek şekilde ayarlandı
var coinCounter = new Text2('0', {
size: 100,
fill: 0xFFFFFF
});
-LK.gui.top.addChild(coinCounter);
-coinCounter.x = 2048 / 2 - coinCounter.width / 2; // Ortalamak için
-coinCounter.y = 20; // Üst kısımda konumlandırın
+LK.gui.center.addChild(coinCounter);
+coinCounter.x = 2048 / 2 - coinCounter.width / 2;
+coinCounter.y = 2732 / 2 - coinCounter.height / 2;
+// Flying enemy spawn fonksiyonu (welcome text kaldırıldı)
+function spawnFlyinEnemy() {
+ var delay = Math.random() * 2000 + 2000; // 2000-4000 ms delay
+ LK.setTimeout(function () {
+ var flyinEnemy = new FlyinEnemy();
+ flyinEnemy.x = 2048;
+ flyinEnemy.y = 400 + 50;
+ game.addChild(flyinEnemy);
+ flyinEnemies.push(flyinEnemy);
+ spawnFlyinEnemy();
+ }, delay);
+}
+// Oyun başladığında flying enemy spawn işlemini tetikle
+spawnFlyinEnemy();
game.update = function () {
- // Arka planı güncelle
+ // Arka plan ve oyuncu güncelleme
scrollingBackground.update();
- // Oyuncuyu güncelle
player.update();
- // Düşmanları spawnla ve güncelle
+ // Normal düşman spawn ve güncelleme
enemySpawnCounter++;
if (enemySpawnCounter >= enemySpawnInterval) {
- // Check if any existing enemy is too close to the spawn point
var canSpawn = true;
for (var i = 0; i < enemies.length; i++) {
if (enemies[i].x > 1800) {
- // Adjust the value as needed
canSpawn = false;
break;
}
}
@@ -222,11 +186,11 @@
enemies.push(enemy);
game.addChild(enemy);
}
enemySpawnCounter = 0;
- // Reduce the interval for more frequent spawning
enemySpawnInterval = Math.floor(Math.random() * 100) + 30;
}
+ // Normal düşmanlar için collision kontrolü
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
if (player.intersects(enemies[j])) {
LK.effects.flashScreen(0xff0000, 1000);
@@ -235,65 +199,60 @@
enemies[j].passed = true;
LK.setScore(LK.getScore() + 1);
scoreText.setText(LK.getScore());
}
- // Check for collision between weapon and enemy
+ // Weapon ile çarpışma kontrolü
for (var k = game.children.length - 1; k >= 0; k--) {
var child = game.children[k];
if (child instanceof Weapon && child.intersects(enemies[j])) {
- // Spawn a coin at the enemy's position before destroying
var coin = LK.getAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
coin.x = enemies[j].x;
coin.y = enemies[j].y;
- // Sabit velocity değeri belirleyelim (örneğin 5)
coin.velocity = 5;
coin.update = function () {
- this.x -= this.velocity; // Sola hareket ettir
+ this.x -= this.velocity;
if (this.x < -100) {
this.destroy();
coins.splice(coins.indexOf(this), 1);
}
};
game.addChild(coin);
coins.push(coin);
- // Create a grey particle effect at the enemy's position
+ // Particle efektini oluştur
var particleEffect = LK.getAsset('particle', {
anchorX: 0.5,
anchorY: 0.5,
- color: 0x808080 // Grey color
+ color: 0x808080
});
particleEffect.x = enemies[j].x;
particleEffect.y = enemies[j].y;
game.addChild(particleEffect);
LK.setTimeout(function () {
particleEffect.destroy();
particleEffect.update = function () {
- this.x -= 5; // Move left with enemy speed
+ this.x -= 5;
};
- }, 150); // Destroy particle effect after 0.15 second
- // Enemy ve weapon'ı yok et
+ }, 150);
enemies[j].destroy();
child.destroy();
enemies.splice(j, 1);
break;
}
}
}
- // Flying enemy'leri güncelle ve collision kontrolü yap
+ // Flying enemy'ler için collision kontrolü
for (var n = flyinEnemies.length - 1; n >= 0; n--) {
flyinEnemies[n].update();
if (player.intersects(flyinEnemies[n])) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
- // Check for collision between weapon and flying enemy
for (var k = game.children.length - 1; k >= 0; k--) {
var child = game.children[k];
if (child instanceof Weapon && child.intersects(flyinEnemies[n])) {
- // Spawn a coin at the flying enemy's position before destroying
var coin = LK.getAsset('coin', {
anchorX: 0.5,
anchorY: 0.5
});
@@ -308,31 +267,28 @@
}
};
game.addChild(coin);
coins.push(coin);
- // Create a grey particle effect at the flying enemy's position
var particleEffect = LK.getAsset('particle', {
anchorX: 0.5,
anchorY: 0.5,
- color: 0x808080 // Grey color
+ color: 0x808080
});
particleEffect.x = flyinEnemies[n].x;
particleEffect.y = flyinEnemies[n].y;
game.addChild(particleEffect);
LK.setTimeout(function () {
particleEffect.destroy();
particleEffect.update = function () {
- this.x -= 5; // Move left with flying enemy speed
+ this.x -= 5;
};
- }, 150); // Destroy particle effect after 0.15 second
- // Flying enemy ve weapon'ı yok et
+ }, 150);
flyinEnemies[n].destroy();
child.destroy();
flyinEnemies.splice(n, 1);
break;
}
}
- // Ekranın dışına çıkan flying enemy'leri diziden kaldır
if (flyinEnemies[n] && flyinEnemies[n].x < -50) {
flyinEnemies[n].destroy();
flyinEnemies.splice(n, 1);
}
@@ -341,9 +297,9 @@
for (var m = coins.length - 1; m >= 0; m--) {
var coin = coins[m];
coin.update();
if (player.intersects(coin)) {
- coinCount++; // Coin alındığında counter'ı artır
+ coinCount++; // Her coin alımında 1 artar
coinCounter.setText(coinCount.toString());
coin.destroy();
coins.splice(m, 1);
}
@@ -355,9 +311,8 @@
if (!game.lastWeaponTime || Date.now() - game.lastWeaponTime > 350) {
var weapon = new Weapon();
weapon.x = player.x;
weapon.y = player.y;
- // Hedef koordinatlarını hesapla
var dx = x - weapon.x;
var dy = y - weapon.y;
var distance = Math.sqrt(dx * dx + dy * dy);
weapon.directionX = dx / distance;
Single 2D Mario Character. In-Game asset. 2d. Blank background.
2D Single Monster. In-Game asset. 2d. Blank background. High contrast. No shadows.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
marionun ingiliz boru anahtarı aleti. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
red heart mario. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
completely black simple counter without sharp edges
sea and sky,pixel,realistic but detailles benzer renkler mavi ve mavi Single Game Texture. In-Game asset. 2d. Blank background. low contrast. No shadows