User prompt
oyun baçşadığında SpaceBackground sesini çal
User prompt
güçlendirme alındığında powerup sesini çal
User prompt
ne zaman lazer ateşlenirse laser sesini çal
User prompt
zorluk her 50 puanda bir değişmeli
User prompt
add a backgroun asset
User prompt
power yazısını difficulty yazısının altına konumlandırırmısın
User prompt
bu oyunu ingilizceye çevirirmisin
User prompt
her güçlendirme alındığında sağ tarafta güçlendirmenin ne kadar süresinin kaldığını gösteren 10 saniyelik bir sayaç gelir ve güçlendirme gittiğinde sayaçda gider
User prompt
güçlendrimeler 10 saniyeliğine olmalı eğer 10 saniye bitmeden bir güçlendirme daha alınırsa bir atış daha yapar ve böyle ilerler
User prompt
eğer bir güçlendirme alındıysa oyun bitene kadar o güçlendirme gitmememeli (eğer bir tane daha güçlendirme alınırsa her seferinde daha çok mermi atar)
User prompt
bir düşman oyuncuya değdiği an oyun bitmeli
User prompt
düşmanlar bazen duruyor hiç bir zaman durmamalılar hep oyuncuyu takip etmeliler
User prompt
güçlendirmeyi her aldığımızda daha fazla mermi atmalı
User prompt
güçlendirmeler alındığında mermiler artmalı (her güçlendirmede vir atışda çıkan mermi sayısı artmalı)
User prompt
güçlendirme çalışmıyor
User prompt
Please fix the bug: 'ReferenceError: centerShip is not defined' in or related to this line: 'enemy.targetX = centerShip.x;' Line Number: 133
User prompt
güçlendirmeler çalışmıyor bunu düzelt ve ortadaki gri daireyi kaldır oyun sadece karakter öldüğünde bitsin
User prompt
mermiler yukarı gitmeli
Code edit (1 edits merged)
Please save this source code
User prompt
Galaksi Savaşçısı: Sonsuz Akın
User prompt
Oyunun konseptini anlatıyorum: * Ortada bir uzay gemisinin durmasını ve karakterin farenin olduğu yerde bulunmasını istiyorum. Karakterin 10 üzerinden 7 hızla hareket etmesini istiyorum * Düşmanlar galaksi oyununa benzer şekilde yukarıdan aşağıya saldıracak. * Bir düşman oyuncuya dokunursa oyun biter, oyuncu kaybeder ve ekranda "Öldün" yazar ve skor belirir. "Yeniden Oynayın" butonu oyunu yeniden başlatır * Oyuncu boşluk tuşuyla saldırır ve mermi isabet ettiğinde düşman ortadan kaybolur. * Mermiler düşmanlara çarptığında puan birer birer artacaktır. Kullanıcı, ekranın sağ üstünde puanını görüntüleyebilmelidir. * Her dakika oyun zorluğu artacak ve zorluk seviyesi ekranın sol üst köşesinde gösterilmelidir. Seviyeler 1'den 100'e kadar değişir. Her seviyede düşmanların ortaya çıkma oranı artacaktır. * Ayrıca oyuncuyu olumlu etkileyen güçlendiriciler rastgele ortaya çıkmalı ve kullanıcı güçlendiricileri topladığında mermi sayısı artmalıdır. * Birden fazla düşman önden rastgele belirir ve oyuncuya yaklaşır.
Initial prompt
helo
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); // Default: straight up self.speedX = 0; self.speedY = -18; self.update = function () { self.x += self.speedX; self.y += self.speedY; }; return self; }); // CenterShip class removed (no longer needed) // Enemy class var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 3; // Will be set dynamically self.targetX = 0; self.targetY = 0; self.update = function () { // Move towards target (center ship) var dx = self.targetX - self.x; var dy = self.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 0) { self.x += dx / dist * self.speed; self.y += dy / dist * self.speed; } }; return self; }); // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Movement handled in game.update }; return self; }); // Powerup class 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.update = function () { self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // --- Game Variables --- // --- Asset Initialization --- var player = new Player(); // Center ship removed as per new requirements var enemies = []; var bullets = []; var powerups = []; var dragNode = null; var lastPlayerIntersect = false; var canShoot = true; var shootCooldown = 0; var shootInterval = 18; // frames between shots var multiShot = 1; // Number of bullets per shot (increases with each powerup, max 5) var multiShotTimer = 0; // Frames left for powerup var difficulty = 1; // 1-100 var difficultyTimer = 0; // frames var enemySpawnTimer = 0; var enemySpawnInterval = 60; // frames var powerupSpawnTimer = 0; var powerupSpawnInterval = 600; // frames // --- Positioning --- player.x = 2048 / 2; player.y = 2732 - 400; game.addChild(player); // --- GUI Elements --- var scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); var difficultyTxt = new Text2('Zorluk: 1', { size: 70, fill: 0xFFCC00 }); difficultyTxt.anchor.set(0, 0); LK.gui.top.addChild(difficultyTxt); difficultyTxt.x = 120; // Avoid top left menu // --- Helper Functions --- function spawnEnemy() { var enemy = new Enemy(); // Spawn at random X at top, target centerShip enemy.x = 200 + Math.random() * (2048 - 400); enemy.y = -100; enemy.targetX = player.x; enemy.targetY = player.y; // Speed scales with difficulty enemy.speed = 2.5 + difficulty * 0.08; enemies.push(enemy); game.addChild(enemy); } function spawnPowerup() { var powerup = new Powerup(); powerup.x = 200 + Math.random() * (2048 - 400); powerup.y = -80; powerups.push(powerup); game.addChild(powerup); } function shootBullets() { if (!canShoot) return; canShoot = false; shootCooldown = shootInterval; var angleStep = 0.18; // radians between bullets if multiShot var baseAngle = -Math.PI / 2; var startAngle = baseAngle - (multiShot - 1) * angleStep / 2; for (var i = 0; i < multiShot; i++) { var bullet = new Bullet(); bullet.x = player.x; bullet.y = player.y - player.height / 2; // Spread for multiShot var angle = startAngle + i * angleStep; // Set bullet velocity based on angle bullet.speedX = Math.cos(angle) * 18; bullet.speedY = Math.sin(angle) * 18; // Override update for angled bullets bullet.update = function () { this.x += this.speedX; this.y += this.speedY; }; bullets.push(bullet); game.addChild(bullet); } } // --- Input Handling --- game.move = function (x, y, obj) { // Move player towards pointer at 0.7 speed (10 üzerinden 7) var dx = x - player.x; var dy = y - player.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > 0) { var moveDist = Math.min(dist, 0.7 * 60); // 0.7*60 px per frame player.x += dx / dist * moveDist; player.y += dy / dist * moveDist; } // Check collision with enemies var playerHit = false; for (var i = 0; i < enemies.length; i++) { if (player.intersects(enemies[i])) { playerHit = true; break; } } if (!lastPlayerIntersect && playerHit) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } lastPlayerIntersect = playerHit; // Powerup collection for (var i = powerups.length - 1; i >= 0; i--) { if (player.intersects(powerups[i])) { // Each powerup increases multiShot by 1 and extends timer by 10s multiShot += 1; // If timer is running, add 10s, else set to 10s if (multiShotTimer > 0) { multiShotTimer += 600; // stack duration } else { multiShotTimer = 600; } powerups[i].destroy(); powerups.splice(i, 1); } } }; // (removed duplicate game.down/game.up, handled below) // --- Main Game Loop --- game.update = function () { // --- Shooting cooldown --- if (!canShoot) { shootCooldown--; if (shootCooldown <= 0) { canShoot = true; } } // --- MultiShot Powerup timer logic --- if (multiShotTimer > 0) { multiShotTimer--; if (multiShotTimer === 0) { multiShot = 1; } } // --- Difficulty Timer --- difficultyTimer++; if (difficultyTimer >= 3600 && difficulty < 100) { // Every 60s difficulty++; difficultyTimer = 0; difficultyTxt.setText('Zorluk: ' + difficulty); // Increase enemy spawn rate enemySpawnInterval = Math.max(20, 60 - difficulty * 0.4); } // --- Enemy Spawning --- enemySpawnTimer++; if (enemySpawnTimer >= enemySpawnInterval) { spawnEnemy(); enemySpawnTimer = 0; } // --- Powerup Spawning --- powerupSpawnTimer++; if (powerupSpawnTimer >= powerupSpawnInterval) { spawnPowerup(); powerupSpawnTimer = 0; } // --- Update Enemies --- for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; // Always update target to player's current position so enemies never stop enemy.targetX = player.x; enemy.targetY = player.y; enemy.update(); // Game over if enemy touches player if (enemy.intersects(player)) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; } // If enemy goes off screen, remove if (enemy.y > 2732 + 200) { enemy.destroy(); enemies.splice(i, 1); } } // --- Update Bullets --- for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; bullet.update(); // Remove if off screen if (bullet.y < -100 || bullet.x < -100 || bullet.x > 2148) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check collision with enemies var hit = false; for (var j = enemies.length - 1; j >= 0; j--) { if (bullet.intersects(enemies[j])) { // Destroy both enemies[j].destroy(); enemies.splice(j, 1); bullet.destroy(); bullets.splice(i, 1); // Score LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); hit = true; break; } } if (hit) continue; } // --- Update Powerups --- for (var i = powerups.length - 1; i >= 0; i--) { var powerup = powerups[i]; powerup.update(); if (powerup.y > 2732 + 100) { powerup.destroy(); powerups.splice(i, 1); } } }; // --- Touchscreen: auto-fire on hold --- var fireHold = false; game.down = function (x, y, obj) { fireHold = true; game.move(x, y, obj); }; game.up = function (x, y, obj) { fireHold = false; }; LK.on('tick', function () { if (fireHold && canShoot) { shootBullets(); } }); // --- Initial Score --- scoreTxt.setText(LK.getScore()); difficultyTxt.setText('Zorluk: ' + difficulty);
===================================================================
--- original.js
+++ change.js
@@ -190,11 +190,16 @@
lastPlayerIntersect = playerHit;
// Powerup collection
for (var i = powerups.length - 1; i >= 0; i--) {
if (player.intersects(powerups[i])) {
- // Always increase multiShot by 1 (no upper limit), and reset timer
+ // Each powerup increases multiShot by 1 and extends timer by 10s
multiShot += 1;
- multiShotTimer = 600; // 10 seconds at 60fps
+ // If timer is running, add 10s, else set to 10s
+ if (multiShotTimer > 0) {
+ multiShotTimer += 600; // stack duration
+ } else {
+ multiShotTimer = 600;
+ }
powerups[i].destroy();
powerups.splice(i, 1);
}
}
@@ -208,9 +213,15 @@
if (shootCooldown <= 0) {
canShoot = true;
}
}
- // --- MultiShot Powerup is now permanent for the session (no timer) ---
+ // --- MultiShot Powerup timer logic ---
+ if (multiShotTimer > 0) {
+ multiShotTimer--;
+ if (multiShotTimer === 0) {
+ multiShot = 1;
+ }
+ }
// --- Difficulty Timer ---
difficultyTimer++;
if (difficultyTimer >= 3600 && difficulty < 100) {
// Every 60s