User prompt
Çözümü uygula
User prompt
Mermiler koloninin canını sadece 1 götürsün. Mermi saldırı gücü 1 can sayısı olsun.
User prompt
Her mermi 1 can götürsün.
User prompt
Düşman 1 mermide oyun bitiyor. Bunu engelle canı bitmeden oyun bitmesin
User prompt
Koloni 50 normal mermilik canı olsun ve can barı görünsün
User prompt
Düşman gemisi haritaya girince gemimiz onu takip etsin ve yaklaşsın saldırmaya başlasın. koloniyi korusun çok uzaklaşmasın. düşman ve dost gemi hızlarını %100 yavaşlat.
User prompt
Düşman gemisi istasyona yaklaşmadan mermi sıkmasın ve bizim gemimiz düşmana yaklaşmadan mermi sıkmasın. mermiler çok az can götürsün. Savaş uzun sürsün
User prompt
gemimiz düşman gemisi haritaya girince mermiyi onu kovalasın ve mermiyi ona doğru sıksın
User prompt
Gemimiz etrafında dolaşsın düşman gemisi yaklaşınca düşman ile savaşsın. Düşman gemisi yaklaşınca ateş etsin
User prompt
Bizim gemimiz rastgele dolaşsın etrafta düşman olunca saldırsın
Code edit (1 edits merged)
Please save this source code
User prompt
Galactic Colony Command
Initial prompt
Oyuncular, uzak bir gezegende kendi uzay kolonilerini kurar ve yönetir. Hammadde toplama, otomasyon sistemleri kurma ve koloninin büyümesini sağlama ana hedeflerdir. Kaynakları optimize ederek yeni teknolojiler geliştirir, savunma ve saldırı gemileri üretirler. Diğer kolonilerle stratejik savaşlar yaparak kaynak üstünlüğü ve galaktik hakimiyet için mücadele ederler. Oyun, kaynak yönetimi, otomasyon ve uzay savaşlarını birleştirerek derin ve stratejik bir deneyim sunar.
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ // Mermi var Bullet = Container.expand(function () { var self = Container.call(this); var b = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 40; self.dirX = 0; self.dirY = -1; self.from = 'player'; // veya 'enemy' self.update = function () { self.x += self.dirX * self.speed; self.y += self.dirY * self.speed; }; return self; }); // Otomatik toplayıcı (Collector) var Collector = Container.expand(function () { var self = Container.call(this); var col = self.attachAsset('collector', { anchorX: 0.5, anchorY: 0.5 }); self.target = null; self.speed = 8; self.carrying = 0; self.maxCarry = 10; self.state = 'idle'; // idle, moving, returning self.update = function () { if (self.state === 'moving' && self.target) { var dx = self.target.x - self.x; var dy = self.target.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist < 10) { // Kaynağa ulaştı if (!self.target.collected && self.carrying < self.maxCarry) { var take = Math.min(self.maxCarry - self.carrying, self.target.amount); self.carrying += take; self.target.amount -= take; if (self.target.amount <= 0) { self.target.collected = true; self.target.visible = false; } } self.state = 'returning'; } else { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } } else if (self.state === 'returning') { var dx = colony.x - self.x; var dy = colony.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist < 10) { // Koloniye ulaştı resources += self.carrying; self.carrying = 0; self.state = 'idle'; self.target = null; } else { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } } }; return self; }); // Koloni ana üssü var Colony = Container.expand(function () { var self = Container.call(this); var c = self.attachAsset('colony', { anchorX: 0.5, anchorY: 0.5 }); return self; }); // Düşman gemisi var Enemy = Container.expand(function () { var self = Container.call(this); var e = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 7 + Math.random() * 4; self.target = null; self.hp = 2; self.update = function () { if (self.target) { var dx = self.target.x - self.x; var dy = self.target.y - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > self.speed) { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } } }; return self; }); // Kaynak noktası var ResourceNode = Container.expand(function () { var self = Container.call(this); var res = self.attachAsset('resource', { anchorX: 0.5, anchorY: 0.5 }); self.amount = 10 + Math.floor(Math.random() * 10); // 10-19 arası kaynak self.collected = false; return self; }); // Oyuncu gemisi var Ship = Container.expand(function () { var self = Container.call(this); var s = self.attachAsset('ship', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 22; self.targetX = self.x; self.targetY = self.y; self.lastShot = 0; self.shootDelay = 30; // 0.5s self.update = function () { // Hareket var dx = self.targetX - self.x; var dy = self.targetY - self.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist > self.speed) { self.x += self.speed * dx / dist; self.y += self.speed * dy / dist; } else { self.x = self.targetX; self.y = self.targetY; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x0a0a1a }); /**** * Game Code ****/ // Koloni, kaynak, gemi ve düşman için temel şekiller // Global değişkenler var colony; var ship; var collectors = []; var resourceNodes = []; var enemies = []; var bullets = []; var resources = 0; var autoCollectors = 1; var spawnEnemyTimer = 0; var dragNode = null; var lastTouch = { x: 0, y: 0 }; // Koloni kur colony = new Colony(); colony.x = 2048 / 2; colony.y = 2732 - 400; game.addChild(colony); // Kaynak göstergesi var resourceTxt = new Text2('Kaynak: 0', { size: 90, fill: "#fff" }); resourceTxt.anchor.set(0.5, 0); LK.gui.top.addChild(resourceTxt); // Otomasyon göstergesi var collectorTxt = new Text2('Toplayıcı: 1', { size: 60, fill: 0xB8FFB8 }); collectorTxt.anchor.set(0.5, 0); LK.gui.top.addChild(collectorTxt); collectorTxt.y = 110; // Gemi kur ship = new Ship(); ship.x = 2048 / 2; ship.y = 2732 - 700; game.addChild(ship); // Otomatik toplayıcıları oluştur function createCollectors(n) { for (var i = collectors.length; i < n; i++) { var c = new Collector(); c.x = colony.x + 100 * (i - n / 2); c.y = colony.y + 100; collectors.push(c); game.addChild(c); } } createCollectors(autoCollectors); // Kaynak noktalarını oluştur function spawnResources() { for (var i = 0; i < 5; i++) { var r = new ResourceNode(); var angle = Math.PI * 2 * i / 5 + Math.random() * 0.2; var dist = 700 + Math.random() * 200; r.x = colony.x + Math.cos(angle) * dist; r.y = colony.y - 600 + Math.sin(angle) * dist; resourceNodes.push(r); game.addChild(r); } } spawnResources(); // Düşman üret function spawnEnemy() { var e = new Enemy(); var side = Math.random(); if (side < 0.5) { e.x = Math.random() * 2048; e.y = -100; } else { e.x = Math.random() < 0.5 ? -100 : 2048 + 100; e.y = 400 + Math.random() * 1200; } e.target = colony; enemies.push(e); game.addChild(e); } // Gemiye dokunma ve sürükleme game.down = function (x, y, obj) { // Gemiye dokunulduysa sürükle var local = game.toLocal({ x: x, y: y }); var dx = local.x - ship.x; var dy = local.y - ship.y; if (dx * dx + dy * dy < 120 * 120) { dragNode = ship; lastTouch.x = local.x; lastTouch.y = local.y; } else { // Hedefe git ship.targetX = local.x; ship.targetY = local.y; } }; game.move = function (x, y, obj) { if (dragNode === ship) { var local = game.toLocal({ x: x, y: y }); ship.targetX = local.x; ship.targetY = local.y; lastTouch.x = local.x; lastTouch.y = local.y; } }; game.up = function (x, y, obj) { dragNode = null; }; // Kaynak toplama otomasyonu function assignCollectors() { for (var i = 0; i < collectors.length; i++) { var c = collectors[i]; if (c.state === 'idle') { // En yakın toplanmamış kaynağı bul var minDist = 99999; var target = null; for (var j = 0; j < resourceNodes.length; j++) { var r = resourceNodes[j]; if (!r.collected && r.amount > 0) { var dx = r.x - c.x; var dy = r.y - c.y; var dist = dx * dx + dy * dy; if (dist < minDist) { minDist = dist; target = r; } } } if (target) { c.target = target; c.state = 'moving'; } } } } // Gemi ateş etme function shipShoot() { if (LK.ticks - ship.lastShot > ship.shootDelay) { var b = new Bullet(); b.x = ship.x; b.y = ship.y - 60; b.dirX = 0; b.dirY = -1; b.from = 'player'; bullets.push(b); game.addChild(b); ship.lastShot = LK.ticks; } } // Düşman ateş etme function enemyShoot(enemy) { var b = new Bullet(); b.x = enemy.x; b.y = enemy.y + 60; b.dirX = (colony.x - enemy.x) / Math.max(1, Math.sqrt((colony.x - enemy.x) * (colony.x - enemy.x) + (colony.y - enemy.y) * (colony.y - enemy.y))); b.dirY = (colony.y - enemy.y) / Math.max(1, Math.sqrt((colony.x - enemy.x) * (colony.x - enemy.x) + (colony.y - enemy.y) * (colony.y - enemy.y))); b.from = 'enemy'; bullets.push(b); game.addChild(b); } // Oyun güncelleme döngüsü game.update = function () { // Kaynak göstergesini güncelle resourceTxt.setText('Kaynak: ' + resources); collectorTxt.setText('Toplayıcı: ' + autoCollectors); // Kaynaklar bitti ise yenilerini oluştur var allCollected = true; for (var i = 0; i < resourceNodes.length; i++) { if (!resourceNodes[i].collected && resourceNodes[i].amount > 0) { allCollected = false; break; } } if (allCollected) { for (var i = 0; i < resourceNodes.length; i++) { resourceNodes[i].destroy(); } resourceNodes = []; spawnResources(); } // Toplayıcıları görevlendir assignCollectors(); // Collector güncelle for (var i = 0; i < collectors.length; i++) { collectors[i].update(); } // Gemi güncelle ship.update(); // Gemi rastgele dolaşsın ve düşman varsa saldırsın // --- Otomatik hareket için hedef belirleme --- if (!ship.randomMoveTimer) ship.randomMoveTimer = 0; ship.randomMoveTimer++; if (ship.randomMoveTimer > 60) { // Her 1 saniyede bir yeni hedef belirle // Eğer yakınında düşman yoksa rastgele bir hedef seç var nearestEnemy = null; var minDist = 999999; for (var i = 0; i < enemies.length; i++) { var dx = enemies[i].x - ship.x; var dy = enemies[i].y - ship.y; var dist = dx * dx + dy * dy; if (dist < minDist) { minDist = dist; nearestEnemy = enemies[i]; } } if (nearestEnemy && Math.sqrt(minDist) < 600) { // Düşman yakınsa ona yönel ship.targetX = nearestEnemy.x; ship.targetY = nearestEnemy.y; ship.isAttacking = true; } else { // Rastgele bir hedef seç ship.targetX = 200 + Math.random() * (2048 - 400); ship.targetY = 400 + Math.random() * (2732 - 800); ship.isAttacking = false; } ship.randomMoveTimer = 0; } // --- Saldırı: Yakında düşman varsa ateş et --- var attackEnemy = null; for (var i = 0; i < enemies.length; i++) { var dx = enemies[i].x - ship.x; var dy = enemies[i].y - ship.y; var dist = Math.sqrt(dx * dx + dy * dy); if (dist < 500) { attackEnemy = enemies[i]; break; } } if (attackEnemy) { // Düşmana doğru ateş et if (LK.ticks - ship.lastShot > ship.shootDelay) { var b = new Bullet(); b.x = ship.x; b.y = ship.y - 60; var tx = attackEnemy.x - ship.x; var ty = attackEnemy.y - ship.y; var tdist = Math.sqrt(tx * tx + ty * ty); if (tdist > 0) { b.dirX = tx / tdist; b.dirY = ty / tdist; } else { b.dirX = 0; b.dirY = -1; } b.from = 'player'; bullets.push(b); game.addChild(b); ship.lastShot = LK.ticks; } } else { // Düşman yoksa yukarı ateş et (mevcut shipShoot fonksiyonu) shipShoot(); } // Düşman üretimi spawnEnemyTimer++; if (spawnEnemyTimer > 180) { // 3 saniyede bir spawnEnemy(); spawnEnemyTimer = 0; } // Düşman güncelle for (var i = enemies.length - 1; i >= 0; i--) { var e = enemies[i]; e.update(); // Düşman koloniye ulaştı mı? if (e.intersects(colony)) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } // Düşman rastgele ateş etsin if (Math.random() < 0.01) { enemyShoot(e); } } // Mermileri güncelle for (var i = bullets.length - 1; i >= 0; i--) { var b = bullets[i]; b.update(); // Ekran dışıysa sil if (b.x < -100 || b.x > 2148 || b.y < -100 || b.y > 2832) { b.destroy(); bullets.splice(i, 1); continue; } // Çarpışmalar if (b.from === 'player') { // Düşmanlara çarpma for (var j = enemies.length - 1; j >= 0; j--) { var e = enemies[j]; if (b.intersects(e)) { e.hp--; if (e.hp <= 0) { e.destroy(); enemies.splice(j, 1); // Kaynak ödülü resources += 5; } b.destroy(); bullets.splice(i, 1); break; } } } else if (b.from === 'enemy') { // Koloniye çarpma if (b.intersects(colony)) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } // Gemiye çarpma if (b.intersects(ship)) { LK.effects.flashObject(ship, 0xff0000, 500); b.destroy(); bullets.splice(i, 1); // Gemi 2 kez vurulursa oyun biter if (!ship.hit) ship.hit = 0; ship.hit++; if (ship.hit >= 2) { LK.effects.flashScreen(0xff0000, 800); LK.showGameOver(); return; } } } } // Otomasyon yükseltme: 50 kaynak ile yeni toplayıcı if (resources >= 50 && autoCollectors < 3) { resources -= 50; autoCollectors++; createCollectors(autoCollectors); } // Kazanma koşulu: 200 kaynak if (resources >= 200) { LK.showYouWin(); return; } };
===================================================================
--- original.js
+++ change.js
@@ -349,10 +349,75 @@
collectors[i].update();
}
// Gemi güncelle
ship.update();
- // Gemi otomatik ateş etsin
- shipShoot();
+ // Gemi rastgele dolaşsın ve düşman varsa saldırsın
+ // --- Otomatik hareket için hedef belirleme ---
+ if (!ship.randomMoveTimer) ship.randomMoveTimer = 0;
+ ship.randomMoveTimer++;
+ if (ship.randomMoveTimer > 60) {
+ // Her 1 saniyede bir yeni hedef belirle
+ // Eğer yakınında düşman yoksa rastgele bir hedef seç
+ var nearestEnemy = null;
+ var minDist = 999999;
+ for (var i = 0; i < enemies.length; i++) {
+ var dx = enemies[i].x - ship.x;
+ var dy = enemies[i].y - ship.y;
+ var dist = dx * dx + dy * dy;
+ if (dist < minDist) {
+ minDist = dist;
+ nearestEnemy = enemies[i];
+ }
+ }
+ if (nearestEnemy && Math.sqrt(minDist) < 600) {
+ // Düşman yakınsa ona yönel
+ ship.targetX = nearestEnemy.x;
+ ship.targetY = nearestEnemy.y;
+ ship.isAttacking = true;
+ } else {
+ // Rastgele bir hedef seç
+ ship.targetX = 200 + Math.random() * (2048 - 400);
+ ship.targetY = 400 + Math.random() * (2732 - 800);
+ ship.isAttacking = false;
+ }
+ ship.randomMoveTimer = 0;
+ }
+ // --- Saldırı: Yakında düşman varsa ateş et ---
+ var attackEnemy = null;
+ for (var i = 0; i < enemies.length; i++) {
+ var dx = enemies[i].x - ship.x;
+ var dy = enemies[i].y - ship.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < 500) {
+ attackEnemy = enemies[i];
+ break;
+ }
+ }
+ if (attackEnemy) {
+ // Düşmana doğru ateş et
+ if (LK.ticks - ship.lastShot > ship.shootDelay) {
+ var b = new Bullet();
+ b.x = ship.x;
+ b.y = ship.y - 60;
+ var tx = attackEnemy.x - ship.x;
+ var ty = attackEnemy.y - ship.y;
+ var tdist = Math.sqrt(tx * tx + ty * ty);
+ if (tdist > 0) {
+ b.dirX = tx / tdist;
+ b.dirY = ty / tdist;
+ } else {
+ b.dirX = 0;
+ b.dirY = -1;
+ }
+ b.from = 'player';
+ bullets.push(b);
+ game.addChild(b);
+ ship.lastShot = LK.ticks;
+ }
+ } else {
+ // Düşman yoksa yukarı ateş et (mevcut shipShoot fonksiyonu)
+ shipShoot();
+ }
// Düşman üretimi
spawnEnemyTimer++;
if (spawnEnemyTimer > 180) {
// 3 saniyede bir
Fullscreen modern App Store landscape banner, 16:9, high definition, for a game titled "Galactic Colony Command" and with the description "Kendi uzay kolonini kur, kaynakları topla, otomasyon sistemleri geliştir ve diğer kolonilerle stratejik savaşlara girerek galaksinin hakimi ol!". No text on banner!
Fullscreen modern App Store landscape banner, 16:9, high definition, for a game titled "Uzay İstasyonu" and with the description "Kendi uzay kolonini kur, kaynakları topla, otomasyon sistemleri geliştir ve diğer kolonilerle stratejik savaşlara girerek galaksinin hakimi ol!". No text on banner!, Uzay istasyonu
Fullscreen modern App Store landscape banner, 16:9, high definition, for a game titled "Gezegen" and with the description "Kendi uzay kolonini kur, kaynakları topla, otomasyon sistemleri geliştir ve diğer kolonilerle stratejik savaşlara girerek galaksinin hakimi ol!". No text on banner!, Uzay istasyonu, Gezegen
Astreroit cobalt. In-Game asset. 2d. High contrast. No shadows
asteroid gold. In-Game asset. 2d. High contrast. No shadows
asteroid helium. In-Game asset. 2d. High contrast. No shadows
Asteroid Iron - Yazısız. In-Game asset. 2d. High contrast. No shadows
asteroid manganese - yazısız. In-Game asset. 2d. High contrast. No shadows
Asteroid Nikel - Yazısız. In-Game asset. 2d. High contrast. No shadows
Cobalt cevheri. In-Game asset. 2d. High contrast. No shadows
Platinum Cevheri - Yazısız. In-Game asset. 2d. High contrast. No shadows
Ateş - Patlama. In-Game asset. 2d. High contrast. No shadows
Ateş. In-Game asset. 2d. High contrast. No shadows
Maden toplayıcı uzay mekiği, Gerçekçi. In-Game asset. High contrast. No shadows
Uzay savaş gemisi - Gerçekçi - Yazısız. In-Game asset. High contrast. No shadows
Altın Cevheri - Yazısız. In-Game asset. 2d. High contrast. No shadows
Helium cevheri - yazısız. In-Game asset. 2d. High contrast. No shadows
Iron cevheri - yazısız. In-Game asset. 2d. High contrast. No shadows
Manganese cevheri - yazısız. In-Game asset. 2d. High contrast. No shadows
HP BAR - yazısız. In-Game asset. 2d. High contrast. No shadows
Fullscreen modern App Store landscape banner, 16:9, high definition, for a game titled "Galactic Colony Command" and with the description "Kendi uzay kolonini kur, kaynakları topla, otomasyon sistemleri geliştir ve diğer kolonilerle stratejik savaşlara girerek galaksinin hakimi ol!". No text on banner!
uzay savaş gemisi. In-Game asset. 2d. High contrast. No shadows
uzay savaş gemisi - gerçekçi - yazısız. In-Game asset. High contrast. No shadows
uzay savaş gemisi - gerçekçi - yazısız. In-Game asset. High contrast. No shadows
Uzay Savunma Kulesi - Yazısız - Gerçekçi. In-Game asset. High contrast. No shadows
Uzay Savunma Kulesi - Yazısız - Gerçekçi. In-Game asset. High contrast. No shadows
Uzay Savunma Kulesi - Yazısız - Gerçekçi. In-Game asset. High contrast. No shadows
Uzay Savunma Kulesi - Yazısız - Gerçekçi. In-Game asset. High contrast. No shadows
Uzay savaş istasyonu - Gerçekçi. In-Game asset. High contrast. No shadows
Uzay savaş istasyonu - Gerçekçi. In-Game asset. High contrast. No shadows
Uzay savaş istasyonu - Gerçekçi. In-Game asset. High contrast. No shadows
Hoparlör. In-Game asset. 2d. High contrast. No shadows