User prompt
Sözsüz ve biraz heyecan katman bir şarkı koy
User prompt
Create a background
User prompt
Remove the scrolling background
User prompt
Make 1 background
User prompt
Oyunda 16 tanearka plan olsun ve arka plan y oku ile yukarıdan aşağıya doğru ilerlesin
User prompt
Y oku aşağıdan yuxarıya doğru hareket eden background oluştur ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Oyuncunun skoru 50 artınca mermi hızını 10% büyüklüğünü ise 2.5% artır
User prompt
Düşmanların ateşi oyuncuya doğru gelsin
User prompt
Mermi atışını 50% azaltıp hızını 40%artır
Code edit (1 edits merged)
Please save this source code
User prompt
Sky Defender
Initial prompt
Bana üstten görüntülü hareket eden bir oyuncu ve bu oyuncuya saldıran düşmanlar ve oyuncu onlara ateş ederek yok ediyor. Yok ettiği düşmanlarla skor kazanıyor ve skor sol üst köşede görünüyor ve skor arttıkca düşmanlar artıyor ve ateş atan düşmanlar geliyor
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Background = Container.expand(function () { var self = Container.call(this); var backgroundGraphics = self.attachAsset('background', { anchorX: 0, anchorY: 0 }); return self; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemyShip', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; self.health = 1; self.canShoot = false; self.shootTimer = 0; self.shootInterval = 120; // 2 seconds at 60fps self.update = function () { self.y += self.speed; if (self.canShoot) { self.shootTimer++; if (self.shootTimer >= self.shootInterval) { self.shootTimer = 0; // Create enemy bullet var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y + 40; // Calculate direction to player var dx = player.x - bullet.x; var dy = player.y - bullet.y; var distance = Math.sqrt(dx * dx + dy * dy); // Normalize direction and set velocity bullet.velocityX = dx / distance * bullet.speed; bullet.velocityY = dy / distance * bullet.speed; enemyBullets.push(bullet); game.addChild(bullet); } } }; return self; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 8; self.velocityX = 0; self.velocityY = 8; // Default downward movement self.update = function () { self.x += self.velocityX; self.y += self.velocityY; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('playerShip', { anchorX: 0.5, anchorY: 0.5 }); self.shootCooldown = 0; self.shootRate = 20; // Can shoot every 20 frames (50% reduction in firing rate) self.update = function () { if (self.shootCooldown > 0) { self.shootCooldown--; } }; self.shoot = function () { if (self.shootCooldown <= 0) { var bullet = new PlayerBullet(); bullet.x = self.x; bullet.y = self.y - 40; // Apply upgrades if score is 50 or higher if (LK.getScore() >= 50) { bullet.speed = bullet.speed * 1.1; // 10% speed increase bullet.scaleX = 1.025; // 2.5% size increase bullet.scaleY = 1.025; // 2.5% size increase } playerBullets.push(bullet); game.addChild(bullet); self.shootCooldown = self.shootRate; LK.getSound('shoot').play(); } }; return self; }); var PlayerBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('playerBullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -17; self.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000033 }); /**** * Game Code ****/ // Game variables var player; var enemies = []; var playerBullets = []; var enemyBullets = []; var enemySpawnTimer = 0; var enemySpawnRate = 90; // Start spawning every 1.5 seconds var dragNode = null; var gameSpeed = 1; // Create score display var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0, 0); scoreTxt.x = 120; // Avoid top-left menu area scoreTxt.y = 50; LK.gui.addChild(scoreTxt); // Create background var background = new Background(); background.x = 0; background.y = 0; game.addChild(background); // Create player player = new Player(); player.x = 1024; // Center horizontally player.y = 2400; // Near bottom of screen game.addChild(player); // Start background music LK.playMusic('bgmusic'); // Game event handlers game.move = function (x, y, obj) { if (dragNode) { dragNode.x = Math.max(40, Math.min(2008, x)); // Keep within screen bounds dragNode.y = Math.max(40, Math.min(2692, y)); } }; game.down = function (x, y, obj) { dragNode = player; game.move(x, y, obj); // Auto-shoot when touching player.shoot(); }; game.up = function (x, y, obj) { dragNode = null; }; // Main game update loop game.update = function () { // Update enemy spawn rate based on score var score = LK.getScore(); if (score > 20) { enemySpawnRate = 45; // Spawn every 0.75 seconds } if (score > 50) { enemySpawnRate = 30; // Spawn every 0.5 seconds } // Spawn enemies enemySpawnTimer++; if (enemySpawnTimer >= enemySpawnRate) { enemySpawnTimer = 0; var enemy = new Enemy(); enemy.x = Math.random() * 1800 + 124; // Random x position within screen enemy.y = -50; // Start above screen // Advanced enemies can shoot back if (score > 10) { enemy.canShoot = true; enemy.shootInterval = 90 + Math.random() * 60; // Vary shoot timing } if (score > 30) { enemy.speed = 4; // Faster enemies } enemies.push(enemy); game.addChild(enemy); } // Auto-shoot for player when dragging if (dragNode === player) { player.shoot(); } // Upgrade player bullets when score reaches 50 if (score >= 50 && !player.bulletsUpgraded) { player.bulletsUpgraded = true; // Apply upgrades to existing bullets for (var upgrade_i = 0; upgrade_i < playerBullets.length; upgrade_i++) { var upgradeBullet = playerBullets[upgrade_i]; upgradeBullet.speed = upgradeBullet.speed * 1.1; // 10% speed increase upgradeBullet.scaleX = 1.025; // 2.5% size increase upgradeBullet.scaleY = 1.025; // 2.5% size increase } } // Check player bullet collisions with enemies for (var i = playerBullets.length - 1; i >= 0; i--) { var bullet = playerBullets[i]; // Remove bullets that go off screen if (bullet.y < -50) { bullet.destroy(); playerBullets.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.getSound('enemyHit').play(); LK.effects.flashObject(enemy, 0xffffff, 200); enemy.health--; if (enemy.health <= 0) { // Enemy destroyed LK.setScore(LK.getScore() + 1); scoreTxt.setText('Score: ' + LK.getScore()); enemy.destroy(); enemies.splice(j, 1); } bullet.destroy(); playerBullets.splice(i, 1); break; } } } // Check enemy bullet collisions with player for (var k = enemyBullets.length - 1; k >= 0; k--) { var enemyBullet = enemyBullets[k]; // Remove bullets that go off screen if (enemyBullet.y > 2782) { enemyBullet.destroy(); enemyBullets.splice(k, 1); continue; } // Check collision with player if (enemyBullet.intersects(player)) { // Player hit - game over LK.getSound('explosion').play(); LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } // Check enemy collisions with player for (var m = enemies.length - 1; m >= 0; m--) { var enemy = enemies[m]; // Remove enemies that go off screen if (enemy.y > 2782) { enemy.destroy(); enemies.splice(m, 1); continue; } // Check collision with player if (enemy.intersects(player)) { // Player hit by enemy ship - game over LK.getSound('explosion').play(); LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } } };
===================================================================
--- original.js
+++ change.js
@@ -146,8 +146,10 @@
player = new Player();
player.x = 1024; // Center horizontally
player.y = 2400; // Near bottom of screen
game.addChild(player);
+// Start background music
+LK.playMusic('bgmusic');
// Game event handlers
game.move = function (x, y, obj) {
if (dragNode) {
dragNode.x = Math.max(40, Math.min(2008, x)); // Keep within screen bounds
Üstten görünen 2D bir ejder sırt kısmı görünsün ve kuyruğu düz kanatları 75% açık olsun. In-Game asset. 2d. High contrast. No shadows
Üstten görünen bulutlu bir hava va aşağıda dağlar ve orta çağ kasabası. In-Game asset. 2d. High contrast. No shadows
Üstten görünümlü sırt kısmı tarafı ve kafası aşağı doğru oyuncuya bakan bir yaratık. In-Game asset. 2d. High contrast. No shadows
Alev topu alevi aşağı doru olan. In-Game asset. 2d. High contrast. No shadows
Karanlık morumsu ateşi yukarı doğru olan alev topu. In-Game asset. 2d. High contrast. No shadows