User prompt
power upa bastığımız zaman karakterin boyutu büyüsün
User prompt
karakter level atladığında gücü ve dayanıklılığı artsın
User prompt
mıknatıs çalışmıyor düzelt tıkladığımızda hepsi üstümüze gelsin
User prompt
mıknatıs işaretine bastığımızda herkes üstümüze gelsin
User prompt
Please fix the bug: 'ReferenceError: alienSprite is not defined' in or related to this line: 'tween(alienSprite, {' Line Number: 91
User prompt
karakter her 10 insan yedikten sonra level atlasın ve şekli değişsin
User prompt
arka planı değiştir
User prompt
arka planın resmini backround diye göreyim assets bölümünde
User prompt
arka plana ben istediğim resmi koyabileyim
User prompt
you win olayını kaldır sürekli insan yesin sonsuz döngüye al
User prompt
oyun 3000 insan yedikten sonra bitsin
User prompt
karakter insanları yedikçe gelişsin 10 insan yedikten sonra level 2 ye geçsin 20 insan yedikten sonra level 3
Code edit (1 edits merged)
Please save this source code
User prompt
Uzaylı Açlığı: Gemide Av
Initial prompt
Oyuncu, bir uzay gemisinin içinde aç bir uzaylıyı kontrol eder. Uzaylı, gemide dolaşan insanları yakalayıp yiyerek altın kazanır. Her yenen insan, uzaylıya puan ve altın kazandırır. İnsanlar kaçmaya ve saklanmaya çalışır; bazıları daha hızlı veya daha dirençlidir. Toplanan altınlarla yeni yetenekler veya güçlendirmeler açılabilir. Oyun, belirli bir süre veya hedef altın miktarına ulaşınca sona erer. Zaman ilerledikçe insanlar daha akıllı ve hızlı hale gelir, zorluk artar.
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1", {
gold: 0,
unlockedSpeed: 0,
unlockedMagnet: 0
});
/****
* Classes
****/
// Alien (Uzaylı) sınıfı
var Alien = Container.expand(function () {
var self = Container.call(this);
// Gölge
var shadow = self.attachAsset('shadow', {
anchorX: 0.5,
anchorY: 0.5,
y: 150,
alpha: 0.3
});
// Uzaylı
var alienSprite = self.attachAsset('alien', {
anchorX: 0.5,
anchorY: 0.5
});
// Güçlendirme efekti
var powerupEffect = self.attachAsset('powerup', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0
});
// Hareket hızı
self.baseSpeed = 16;
self.speed = self.baseSpeed;
self.magnet = false;
self.magnetRange = 0;
// Güçlendirme aktif mi
self.powerupActive = false;
self.powerupTimer = 0;
// Yeme animasyonu
self.eatAnim = function () {
tween(alienSprite, {
scaleX: 1.2,
scaleY: 0.8
}, {
duration: 80,
onFinish: function onFinish() {
tween(alienSprite, {
scaleX: 1,
scaleY: 1
}, {
duration: 120
});
}
});
};
// Güçlendirme animasyonu
self.showPowerup = function (type) {
powerupEffect.alpha = 0.7;
powerupEffect.tint = type === 'speed' ? 0x4a90e2 : 0xffe066;
tween(powerupEffect, {
alpha: 0
}, {
duration: 600
});
};
// Update
self.update = function () {
// Güçlendirme süresi
if (self.powerupActive) {
self.powerupTimer--;
if (self.powerupTimer <= 0) {
self.powerupActive = false;
self.speed = self.baseSpeed;
self.magnet = false;
self.magnetRange = 0;
}
}
};
return self;
});
// Altın (Gold) sınıfı
var Gold = Container.expand(function () {
var self = Container.call(this);
var goldSprite = self.attachAsset('gold', {
anchorX: 0.5,
anchorY: 0.5
});
// Düşme animasyonu
self.fallSpeed = 8 + Math.random() * 2;
self.collected = false;
// Update
self.update = function () {
if (!self.collected) {
self.y += self.fallSpeed;
if (self.y > 2732 - 120) self.y = 2732 - 120;
}
};
// Toplanma animasyonu
self.collectAnim = function (targetX, targetY, onFinish) {
self.collected = true;
tween(self, {
x: targetX,
y: targetY,
scaleX: 0.2,
scaleY: 0.2,
alpha: 0
}, {
duration: 400,
easing: tween.cubicIn,
onFinish: onFinish
});
};
return self;
});
// İnsan (Human) sınıfı
var Human = Container.expand(function () {
var self = Container.call(this);
// Gölge
var shadow = self.attachAsset('shadow', {
anchorX: 0.5,
anchorY: 0.5,
y: 70,
alpha: 0.2
});
// İnsan
var humanSprite = self.attachAsset('human', {
anchorX: 0.5,
anchorY: 0.5
});
// Rastgele yön
self.dir = Math.random() < 0.5 ? -1 : 1;
// Hız
self.baseSpeed = 6 + Math.random() * 4;
self.speed = self.baseSpeed;
// Kaçış hedefi
self.targetX = self.x;
self.targetY = self.y;
// Akıllı mı
self.smart = false;
// Dirençli mi
self.resistant = false;
// Kaçış süresi
self.escapeTimer = 0;
// Update
self.update = function () {
// Kaçış hedefi varsa ona git
if (self.escapeTimer > 0) {
self.escapeTimer--;
var dx = self.targetX - self.x;
var dy = self.targetY - self.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist > 10) {
self.x += dx / dist * self.speed;
self.y += dy / dist * self.speed * 0.7;
}
} else {
// Normalde yatayda gezin
self.x += self.dir * self.speed;
// Kenara çarpınca yön değiştir
if (self.x < 120) {
self.x = 120;
self.dir = 1;
}
if (self.x > 2048 - 120) {
self.x = 2048 - 120;
self.dir = -1;
}
}
};
// Kaçış başlat
self.escapeFrom = function (ax, ay) {
self.targetX = self.x < 1024 ? self.x - 300 : self.x + 300;
if (self.targetX < 120) self.targetX = 120;
if (self.targetX > 2048 - 120) self.targetX = 2048 - 120;
self.targetY = self.y - 120 - Math.random() * 100;
if (self.targetY < 200) self.targetY = 200;
self.escapeTimer = 40 + Math.floor(Math.random() * 30);
};
return self;
});
// Güçlendirme (Powerup) sınıfı
var Powerup = Container.expand(function () {
var self = Container.call(this);
var powerupSprite = self.attachAsset('powerup', {
anchorX: 0.5,
anchorY: 0.5
});
// Tür: 'speed' veya 'magnet'
self.type = 'speed';
// Düşme animasyonu
self.fallSpeed = 7 + Math.random() * 2;
self.collected = false;
self.update = function () {
if (!self.collected) {
self.y += self.fallSpeed;
if (self.y > 2732 - 120) self.y = 2732 - 120;
}
};
self.collectAnim = function (targetX, targetY, onFinish) {
self.collected = true;
tween(self, {
x: targetX,
y: targetY,
scaleX: 0.2,
scaleY: 0.2,
alpha: 0
}, {
duration: 400,
easing: tween.cubicIn,
onFinish: onFinish
});
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x1a1a2e
});
/****
* Game Code
****/
// Müzik
// Sesler
// Yere platform (Zemin)
// Yere gölge (Shadow)
// Güçlendirme simgesi (Powerup)
// Altın (Gold)
// İnsan (Human)
// Uzaylı (Alien)
// Zemin
var floor = LK.getAsset('floor', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 2732 - 120
});
game.addChild(floor);
// Skor ve altın
var score = 0;
var gold = storage.gold || 0;
var targetGold = 30;
var timeLimit = 60 * 60; // 60 saniye (60fps)
var timeLeft = timeLimit;
// GUI: Skor ve altın
var scoreTxt = new Text2('0', {
size: 90,
fill: '#fff'
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
var goldTxt = new Text2('₺' + gold, {
size: 70,
fill: '#ffe066'
});
goldTxt.anchor.set(1, 0);
LK.gui.topRight.addChild(goldTxt);
var timerTxt = new Text2('60', {
size: 70,
fill: '#4a90e2'
});
timerTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(timerTxt);
// Güçlendirme butonları (kilitli/açık)
var speedBtn = new Text2('⚡', {
size: 90,
fill: '#4a90e2'
});
speedBtn.anchor.set(0, 1);
speedBtn.x = 40;
speedBtn.y = -40;
LK.gui.bottomLeft.addChild(speedBtn);
var magnetBtn = new Text2('🧲', {
size: 90,
fill: '#ffe066'
});
magnetBtn.anchor.set(0, 1);
magnetBtn.x = 160;
magnetBtn.y = -40;
LK.gui.bottomLeft.addChild(magnetBtn);
// Uzaylıyı oluştur
var alien = new Alien();
alien.x = 1024;
alien.y = 2732 - 120 - 90;
game.addChild(alien);
// İnsanlar ve altınlar
var humans = [];
var golds = [];
var powerups = [];
// Zorluk parametreleri
var humanSpawnInterval = 90;
var lastHumanSpawn = 0;
var goldSpawnInterval = 120;
var lastGoldSpawn = 0;
var powerupSpawnInterval = 600;
var lastPowerupSpawn = 0;
var difficultyTimer = 0;
// Sürükleme
var dragNode = null;
// Oyun bitti mi
var gameEnded = false;
// --- Fonksiyonlar ---
function spawnHuman() {
var h = new Human();
h.x = 200 + Math.random() * (2048 - 400);
h.y = 2732 - 120 - 90;
// Zorluk arttıkça akıllı ve hızlı insanlar
if (Math.random() < 0.25 + difficultyTimer / 1800) h.smart = true;
if (Math.random() < 0.15 + difficultyTimer / 2400) h.resistant = true;
if (h.smart) h.baseSpeed += 2;
if (h.resistant) h.baseSpeed += 1.5;
h.speed = h.baseSpeed;
humans.push(h);
game.addChild(h);
}
function spawnGold(x, y) {
var g = new Gold();
g.x = x;
g.y = y;
golds.push(g);
game.addChild(g);
}
function spawnPowerup(x, y) {
var p = new Powerup();
p.x = x;
p.y = y;
p.type = Math.random() < 0.5 ? 'speed' : 'magnet';
powerups.push(p);
game.addChild(p);
}
function updateGUI() {
scoreTxt.setText(score);
goldTxt.setText('₺' + gold);
timerTxt.setText(Math.ceil(timeLeft / 60));
// Butonlar kilitli mi
speedBtn.alpha = storage.unlockedSpeed ? 1 : 0.3;
magnetBtn.alpha = storage.unlockedMagnet ? 1 : 0.3;
}
// --- Oyun kontrolleri ---
// Sürükleme
function handleMove(x, y, obj) {
if (dragNode && !gameEnded) {
// Sınırlar
var nx = x;
var ny = y;
if (nx < 120) nx = 120;
if (nx > 2048 - 120) nx = 2048 - 120;
if (ny < 200) ny = 200;
if (ny > 2732 - 120 - 90) ny = 2732 - 120 - 90;
dragNode.x = nx;
dragNode.y = ny;
}
}
game.move = handleMove;
game.down = function (x, y, obj) {
// Sadece uzaylıya tıklanırsa sürükle
var local = alien.toLocal(game.toGlobal({
x: x,
y: y
}));
if (Math.abs(local.x) < 90 && Math.abs(local.y) < 90) {
dragNode = alien;
handleMove(x, y, obj);
}
// Güçlendirme butonları
var guiY = LK.gui.bottomLeft.height;
if (y > 2732 - 200) {
if (x < 200 && storage.unlockedSpeed && gold >= 5 && !alien.powerupActive) {
// Hız güçlendirmesi
gold -= 5;
storage.gold = gold;
alien.speed = alien.baseSpeed * 2.2;
alien.powerupActive = true;
alien.powerupTimer = 360;
alien.showPowerup('speed');
LK.getSound('powerup').play();
updateGUI();
}
if (x > 120 && x < 320 && storage.unlockedMagnet && gold >= 5 && !alien.powerupActive) {
// Mıknatıs güçlendirmesi
gold -= 5;
storage.gold = gold;
alien.magnet = true;
alien.magnetRange = 350;
alien.powerupActive = true;
alien.powerupTimer = 360;
alien.showPowerup('magnet');
LK.getSound('powerup').play();
updateGUI();
}
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// --- Oyun döngüsü ---
game.update = function () {
if (gameEnded) return;
// Zaman
timeLeft--;
if (timeLeft <= 0) {
gameEnded = true;
LK.showGameOver();
return;
}
// Zorluk artışı
difficultyTimer++;
if (difficultyTimer % 600 === 0) {
if (humanSpawnInterval > 40) humanSpawnInterval -= 6;
if (goldSpawnInterval > 60) goldSpawnInterval -= 4;
}
// İnsan üretimi
lastHumanSpawn++;
if (lastHumanSpawn >= humanSpawnInterval) {
spawnHuman();
lastHumanSpawn = 0;
}
// Altın üretimi
lastGoldSpawn++;
if (lastGoldSpawn >= goldSpawnInterval) {
spawnGold(200 + Math.random() * (2048 - 400), 200 + Math.random() * 400);
lastGoldSpawn = 0;
}
// Güçlendirme üretimi
lastPowerupSpawn++;
if (lastPowerupSpawn >= powerupSpawnInterval) {
spawnPowerup(200 + Math.random() * (2048 - 400), 200 + Math.random() * 400);
lastPowerupSpawn = 0;
}
// Uzaylı update
alien.update();
// İnsanlar update
for (var i = humans.length - 1; i >= 0; i--) {
var h = humans[i];
h.update();
// Akıllı insanlar uzaylıya yaklaşınca kaçar
if (h.smart && !h.escapeTimer) {
var dx = h.x - alien.x;
var dy = h.y - alien.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < 350) {
h.escapeFrom(alien.x, alien.y);
}
}
// Uzaylı ile çarpışma
if (alien.intersects(h)) {
// Dirençli ise ilk temasta kaçsın
if (h.resistant && !h.escapeTimer) {
h.escapeFrom(alien.x, alien.y);
LK.getSound('ouch').play();
continue;
}
// Yendi!
score++;
alien.eatAnim();
LK.getSound('eat').play();
// Altın bırak
spawnGold(h.x, h.y - 40);
// Bazen güçlendirme bırak
if (Math.random() < 0.08) spawnPowerup(h.x, h.y - 40);
h.destroy();
humans.splice(i, 1);
updateGUI();
continue;
}
// İnsan yere düşerse yok et
if (h.y > 2732 - 120 - 60) {
h.destroy();
humans.splice(i, 1);
}
}
// Altınlar update
for (var j = golds.length - 1; j >= 0; j--) {
var g = golds[j];
g.update();
// Mıknatıs etkisi
if (alien.magnet && !g.collected) {
var dx = g.x - alien.x;
var dy = g.y - alien.y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < alien.magnetRange) {
var tx = alien.x;
var ty = alien.y - 60;
g.collectAnim(tx, ty, function () {
// Toplandı
});
gold += 1;
storage.gold = gold;
LK.getSound('coin').play();
g.destroy();
golds.splice(j, 1);
updateGUI();
continue;
}
}
// Uzaylı ile çarpışma
if (alien.intersects(g) && !g.collected) {
var tx = alien.x;
var ty = alien.y - 60;
g.collectAnim(tx, ty, function () {});
gold += 1;
storage.gold = gold;
LK.getSound('coin').play();
g.destroy();
golds.splice(j, 1);
updateGUI();
continue;
}
// Yere düşerse yok et
if (g.y > 2732 - 120 - 30) {
g.destroy();
golds.splice(j, 1);
}
}
// Güçlendirmeler update
for (var k = powerups.length - 1; k >= 0; k--) {
var p = powerups[k];
p.update();
// Uzaylı ile çarpışma
if (alien.intersects(p) && !p.collected) {
var tx = alien.x;
var ty = alien.y - 60;
p.collectAnim(tx, ty, function () {});
// Güçlendirme açılmamışsa aç
if (p.type === 'speed' && !storage.unlockedSpeed) {
storage.unlockedSpeed = 1;
LK.effects.flashObject(speedBtn, 0x4a90e2, 800);
}
if (p.type === 'magnet' && !storage.unlockedMagnet) {
storage.unlockedMagnet = 1;
LK.effects.flashObject(magnetBtn, 0xffe066, 800);
}
LK.getSound('powerup').play();
p.destroy();
powerups.splice(k, 1);
updateGUI();
continue;
}
// Yere düşerse yok et
if (p.y > 2732 - 120 - 30) {
p.destroy();
powerups.splice(k, 1);
}
}
// Kazanma koşulu
if (gold >= targetGold) {
gameEnded = true;
LK.showYouWin();
return;
}
updateGUI();
};
// Müzik başlat
LK.playMusic('bgm', {
fade: {
start: 0,
end: 1,
duration: 1200
}
}); ===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,567 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+var storage = LK.import("@upit/storage.v1", {
+ gold: 0,
+ unlockedSpeed: 0,
+ unlockedMagnet: 0
+});
+
+/****
+* Classes
+****/
+// Alien (Uzaylı) sınıfı
+var Alien = Container.expand(function () {
+ var self = Container.call(this);
+ // Gölge
+ var shadow = self.attachAsset('shadow', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: 150,
+ alpha: 0.3
+ });
+ // Uzaylı
+ var alienSprite = self.attachAsset('alien', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Güçlendirme efekti
+ var powerupEffect = self.attachAsset('powerup', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ alpha: 0
+ });
+ // Hareket hızı
+ self.baseSpeed = 16;
+ self.speed = self.baseSpeed;
+ self.magnet = false;
+ self.magnetRange = 0;
+ // Güçlendirme aktif mi
+ self.powerupActive = false;
+ self.powerupTimer = 0;
+ // Yeme animasyonu
+ self.eatAnim = function () {
+ tween(alienSprite, {
+ scaleX: 1.2,
+ scaleY: 0.8
+ }, {
+ duration: 80,
+ onFinish: function onFinish() {
+ tween(alienSprite, {
+ scaleX: 1,
+ scaleY: 1
+ }, {
+ duration: 120
+ });
+ }
+ });
+ };
+ // Güçlendirme animasyonu
+ self.showPowerup = function (type) {
+ powerupEffect.alpha = 0.7;
+ powerupEffect.tint = type === 'speed' ? 0x4a90e2 : 0xffe066;
+ tween(powerupEffect, {
+ alpha: 0
+ }, {
+ duration: 600
+ });
+ };
+ // Update
+ self.update = function () {
+ // Güçlendirme süresi
+ if (self.powerupActive) {
+ self.powerupTimer--;
+ if (self.powerupTimer <= 0) {
+ self.powerupActive = false;
+ self.speed = self.baseSpeed;
+ self.magnet = false;
+ self.magnetRange = 0;
+ }
+ }
+ };
+ return self;
+});
+// Altın (Gold) sınıfı
+var Gold = Container.expand(function () {
+ var self = Container.call(this);
+ var goldSprite = self.attachAsset('gold', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Düşme animasyonu
+ self.fallSpeed = 8 + Math.random() * 2;
+ self.collected = false;
+ // Update
+ self.update = function () {
+ if (!self.collected) {
+ self.y += self.fallSpeed;
+ if (self.y > 2732 - 120) self.y = 2732 - 120;
+ }
+ };
+ // Toplanma animasyonu
+ self.collectAnim = function (targetX, targetY, onFinish) {
+ self.collected = true;
+ tween(self, {
+ x: targetX,
+ y: targetY,
+ scaleX: 0.2,
+ scaleY: 0.2,
+ alpha: 0
+ }, {
+ duration: 400,
+ easing: tween.cubicIn,
+ onFinish: onFinish
+ });
+ };
+ return self;
+});
+// İnsan (Human) sınıfı
+var Human = Container.expand(function () {
+ var self = Container.call(this);
+ // Gölge
+ var shadow = self.attachAsset('shadow', {
+ anchorX: 0.5,
+ anchorY: 0.5,
+ y: 70,
+ alpha: 0.2
+ });
+ // İnsan
+ var humanSprite = self.attachAsset('human', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Rastgele yön
+ self.dir = Math.random() < 0.5 ? -1 : 1;
+ // Hız
+ self.baseSpeed = 6 + Math.random() * 4;
+ self.speed = self.baseSpeed;
+ // Kaçış hedefi
+ self.targetX = self.x;
+ self.targetY = self.y;
+ // Akıllı mı
+ self.smart = false;
+ // Dirençli mi
+ self.resistant = false;
+ // Kaçış süresi
+ self.escapeTimer = 0;
+ // Update
+ self.update = function () {
+ // Kaçış hedefi varsa ona git
+ if (self.escapeTimer > 0) {
+ self.escapeTimer--;
+ var dx = self.targetX - self.x;
+ var dy = self.targetY - self.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist > 10) {
+ self.x += dx / dist * self.speed;
+ self.y += dy / dist * self.speed * 0.7;
+ }
+ } else {
+ // Normalde yatayda gezin
+ self.x += self.dir * self.speed;
+ // Kenara çarpınca yön değiştir
+ if (self.x < 120) {
+ self.x = 120;
+ self.dir = 1;
+ }
+ if (self.x > 2048 - 120) {
+ self.x = 2048 - 120;
+ self.dir = -1;
+ }
+ }
+ };
+ // Kaçış başlat
+ self.escapeFrom = function (ax, ay) {
+ self.targetX = self.x < 1024 ? self.x - 300 : self.x + 300;
+ if (self.targetX < 120) self.targetX = 120;
+ if (self.targetX > 2048 - 120) self.targetX = 2048 - 120;
+ self.targetY = self.y - 120 - Math.random() * 100;
+ if (self.targetY < 200) self.targetY = 200;
+ self.escapeTimer = 40 + Math.floor(Math.random() * 30);
+ };
+ return self;
+});
+// Güçlendirme (Powerup) sınıfı
+var Powerup = Container.expand(function () {
+ var self = Container.call(this);
+ var powerupSprite = self.attachAsset('powerup', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ // Tür: 'speed' veya 'magnet'
+ self.type = 'speed';
+ // Düşme animasyonu
+ self.fallSpeed = 7 + Math.random() * 2;
+ self.collected = false;
+ self.update = function () {
+ if (!self.collected) {
+ self.y += self.fallSpeed;
+ if (self.y > 2732 - 120) self.y = 2732 - 120;
+ }
+ };
+ self.collectAnim = function (targetX, targetY, onFinish) {
+ self.collected = true;
+ tween(self, {
+ x: targetX,
+ y: targetY,
+ scaleX: 0.2,
+ scaleY: 0.2,
+ alpha: 0
+ }, {
+ duration: 400,
+ easing: tween.cubicIn,
+ onFinish: onFinish
+ });
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
+ backgroundColor: 0x1a1a2e
+});
+
+/****
+* Game Code
+****/
+// Müzik
+// Sesler
+// Yere platform (Zemin)
+// Yere gölge (Shadow)
+// Güçlendirme simgesi (Powerup)
+// Altın (Gold)
+// İnsan (Human)
+// Uzaylı (Alien)
+// Zemin
+var floor = LK.getAsset('floor', {
+ anchorX: 0,
+ anchorY: 0,
+ x: 0,
+ y: 2732 - 120
+});
+game.addChild(floor);
+// Skor ve altın
+var score = 0;
+var gold = storage.gold || 0;
+var targetGold = 30;
+var timeLimit = 60 * 60; // 60 saniye (60fps)
+var timeLeft = timeLimit;
+// GUI: Skor ve altın
+var scoreTxt = new Text2('0', {
+ size: 90,
+ fill: '#fff'
+});
+scoreTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(scoreTxt);
+var goldTxt = new Text2('₺' + gold, {
+ size: 70,
+ fill: '#ffe066'
+});
+goldTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(goldTxt);
+var timerTxt = new Text2('60', {
+ size: 70,
+ fill: '#4a90e2'
+});
+timerTxt.anchor.set(0.5, 0);
+LK.gui.top.addChild(timerTxt);
+// Güçlendirme butonları (kilitli/açık)
+var speedBtn = new Text2('⚡', {
+ size: 90,
+ fill: '#4a90e2'
+});
+speedBtn.anchor.set(0, 1);
+speedBtn.x = 40;
+speedBtn.y = -40;
+LK.gui.bottomLeft.addChild(speedBtn);
+var magnetBtn = new Text2('🧲', {
+ size: 90,
+ fill: '#ffe066'
+});
+magnetBtn.anchor.set(0, 1);
+magnetBtn.x = 160;
+magnetBtn.y = -40;
+LK.gui.bottomLeft.addChild(magnetBtn);
+// Uzaylıyı oluştur
+var alien = new Alien();
+alien.x = 1024;
+alien.y = 2732 - 120 - 90;
+game.addChild(alien);
+// İnsanlar ve altınlar
+var humans = [];
+var golds = [];
+var powerups = [];
+// Zorluk parametreleri
+var humanSpawnInterval = 90;
+var lastHumanSpawn = 0;
+var goldSpawnInterval = 120;
+var lastGoldSpawn = 0;
+var powerupSpawnInterval = 600;
+var lastPowerupSpawn = 0;
+var difficultyTimer = 0;
+// Sürükleme
+var dragNode = null;
+// Oyun bitti mi
+var gameEnded = false;
+// --- Fonksiyonlar ---
+function spawnHuman() {
+ var h = new Human();
+ h.x = 200 + Math.random() * (2048 - 400);
+ h.y = 2732 - 120 - 90;
+ // Zorluk arttıkça akıllı ve hızlı insanlar
+ if (Math.random() < 0.25 + difficultyTimer / 1800) h.smart = true;
+ if (Math.random() < 0.15 + difficultyTimer / 2400) h.resistant = true;
+ if (h.smart) h.baseSpeed += 2;
+ if (h.resistant) h.baseSpeed += 1.5;
+ h.speed = h.baseSpeed;
+ humans.push(h);
+ game.addChild(h);
+}
+function spawnGold(x, y) {
+ var g = new Gold();
+ g.x = x;
+ g.y = y;
+ golds.push(g);
+ game.addChild(g);
+}
+function spawnPowerup(x, y) {
+ var p = new Powerup();
+ p.x = x;
+ p.y = y;
+ p.type = Math.random() < 0.5 ? 'speed' : 'magnet';
+ powerups.push(p);
+ game.addChild(p);
+}
+function updateGUI() {
+ scoreTxt.setText(score);
+ goldTxt.setText('₺' + gold);
+ timerTxt.setText(Math.ceil(timeLeft / 60));
+ // Butonlar kilitli mi
+ speedBtn.alpha = storage.unlockedSpeed ? 1 : 0.3;
+ magnetBtn.alpha = storage.unlockedMagnet ? 1 : 0.3;
+}
+// --- Oyun kontrolleri ---
+// Sürükleme
+function handleMove(x, y, obj) {
+ if (dragNode && !gameEnded) {
+ // Sınırlar
+ var nx = x;
+ var ny = y;
+ if (nx < 120) nx = 120;
+ if (nx > 2048 - 120) nx = 2048 - 120;
+ if (ny < 200) ny = 200;
+ if (ny > 2732 - 120 - 90) ny = 2732 - 120 - 90;
+ dragNode.x = nx;
+ dragNode.y = ny;
+ }
+}
+game.move = handleMove;
+game.down = function (x, y, obj) {
+ // Sadece uzaylıya tıklanırsa sürükle
+ var local = alien.toLocal(game.toGlobal({
+ x: x,
+ y: y
+ }));
+ if (Math.abs(local.x) < 90 && Math.abs(local.y) < 90) {
+ dragNode = alien;
+ handleMove(x, y, obj);
+ }
+ // Güçlendirme butonları
+ var guiY = LK.gui.bottomLeft.height;
+ if (y > 2732 - 200) {
+ if (x < 200 && storage.unlockedSpeed && gold >= 5 && !alien.powerupActive) {
+ // Hız güçlendirmesi
+ gold -= 5;
+ storage.gold = gold;
+ alien.speed = alien.baseSpeed * 2.2;
+ alien.powerupActive = true;
+ alien.powerupTimer = 360;
+ alien.showPowerup('speed');
+ LK.getSound('powerup').play();
+ updateGUI();
+ }
+ if (x > 120 && x < 320 && storage.unlockedMagnet && gold >= 5 && !alien.powerupActive) {
+ // Mıknatıs güçlendirmesi
+ gold -= 5;
+ storage.gold = gold;
+ alien.magnet = true;
+ alien.magnetRange = 350;
+ alien.powerupActive = true;
+ alien.powerupTimer = 360;
+ alien.showPowerup('magnet');
+ LK.getSound('powerup').play();
+ updateGUI();
+ }
+ }
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+// --- Oyun döngüsü ---
+game.update = function () {
+ if (gameEnded) return;
+ // Zaman
+ timeLeft--;
+ if (timeLeft <= 0) {
+ gameEnded = true;
+ LK.showGameOver();
+ return;
+ }
+ // Zorluk artışı
+ difficultyTimer++;
+ if (difficultyTimer % 600 === 0) {
+ if (humanSpawnInterval > 40) humanSpawnInterval -= 6;
+ if (goldSpawnInterval > 60) goldSpawnInterval -= 4;
+ }
+ // İnsan üretimi
+ lastHumanSpawn++;
+ if (lastHumanSpawn >= humanSpawnInterval) {
+ spawnHuman();
+ lastHumanSpawn = 0;
+ }
+ // Altın üretimi
+ lastGoldSpawn++;
+ if (lastGoldSpawn >= goldSpawnInterval) {
+ spawnGold(200 + Math.random() * (2048 - 400), 200 + Math.random() * 400);
+ lastGoldSpawn = 0;
+ }
+ // Güçlendirme üretimi
+ lastPowerupSpawn++;
+ if (lastPowerupSpawn >= powerupSpawnInterval) {
+ spawnPowerup(200 + Math.random() * (2048 - 400), 200 + Math.random() * 400);
+ lastPowerupSpawn = 0;
+ }
+ // Uzaylı update
+ alien.update();
+ // İnsanlar update
+ for (var i = humans.length - 1; i >= 0; i--) {
+ var h = humans[i];
+ h.update();
+ // Akıllı insanlar uzaylıya yaklaşınca kaçar
+ if (h.smart && !h.escapeTimer) {
+ var dx = h.x - alien.x;
+ var dy = h.y - alien.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < 350) {
+ h.escapeFrom(alien.x, alien.y);
+ }
+ }
+ // Uzaylı ile çarpışma
+ if (alien.intersects(h)) {
+ // Dirençli ise ilk temasta kaçsın
+ if (h.resistant && !h.escapeTimer) {
+ h.escapeFrom(alien.x, alien.y);
+ LK.getSound('ouch').play();
+ continue;
+ }
+ // Yendi!
+ score++;
+ alien.eatAnim();
+ LK.getSound('eat').play();
+ // Altın bırak
+ spawnGold(h.x, h.y - 40);
+ // Bazen güçlendirme bırak
+ if (Math.random() < 0.08) spawnPowerup(h.x, h.y - 40);
+ h.destroy();
+ humans.splice(i, 1);
+ updateGUI();
+ continue;
+ }
+ // İnsan yere düşerse yok et
+ if (h.y > 2732 - 120 - 60) {
+ h.destroy();
+ humans.splice(i, 1);
+ }
+ }
+ // Altınlar update
+ for (var j = golds.length - 1; j >= 0; j--) {
+ var g = golds[j];
+ g.update();
+ // Mıknatıs etkisi
+ if (alien.magnet && !g.collected) {
+ var dx = g.x - alien.x;
+ var dy = g.y - alien.y;
+ var dist = Math.sqrt(dx * dx + dy * dy);
+ if (dist < alien.magnetRange) {
+ var tx = alien.x;
+ var ty = alien.y - 60;
+ g.collectAnim(tx, ty, function () {
+ // Toplandı
+ });
+ gold += 1;
+ storage.gold = gold;
+ LK.getSound('coin').play();
+ g.destroy();
+ golds.splice(j, 1);
+ updateGUI();
+ continue;
+ }
+ }
+ // Uzaylı ile çarpışma
+ if (alien.intersects(g) && !g.collected) {
+ var tx = alien.x;
+ var ty = alien.y - 60;
+ g.collectAnim(tx, ty, function () {});
+ gold += 1;
+ storage.gold = gold;
+ LK.getSound('coin').play();
+ g.destroy();
+ golds.splice(j, 1);
+ updateGUI();
+ continue;
+ }
+ // Yere düşerse yok et
+ if (g.y > 2732 - 120 - 30) {
+ g.destroy();
+ golds.splice(j, 1);
+ }
+ }
+ // Güçlendirmeler update
+ for (var k = powerups.length - 1; k >= 0; k--) {
+ var p = powerups[k];
+ p.update();
+ // Uzaylı ile çarpışma
+ if (alien.intersects(p) && !p.collected) {
+ var tx = alien.x;
+ var ty = alien.y - 60;
+ p.collectAnim(tx, ty, function () {});
+ // Güçlendirme açılmamışsa aç
+ if (p.type === 'speed' && !storage.unlockedSpeed) {
+ storage.unlockedSpeed = 1;
+ LK.effects.flashObject(speedBtn, 0x4a90e2, 800);
+ }
+ if (p.type === 'magnet' && !storage.unlockedMagnet) {
+ storage.unlockedMagnet = 1;
+ LK.effects.flashObject(magnetBtn, 0xffe066, 800);
+ }
+ LK.getSound('powerup').play();
+ p.destroy();
+ powerups.splice(k, 1);
+ updateGUI();
+ continue;
+ }
+ // Yere düşerse yok et
+ if (p.y > 2732 - 120 - 30) {
+ p.destroy();
+ powerups.splice(k, 1);
+ }
+ }
+ // Kazanma koşulu
+ if (gold >= targetGold) {
+ gameEnded = true;
+ LK.showYouWin();
+ return;
+ }
+ updateGUI();
+};
+// Müzik başlat
+LK.playMusic('bgm', {
+ fade: {
+ start: 0,
+ end: 1,
+ duration: 1200
+ }
});
\ No newline at end of file
allien. In-Game asset. 2d. High contrast. No shadows
allien. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
uzay aracının salonu üstten bakışı . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
uzaylı hareket etsin animasyonlu olsun. In-Game asset. 2d. High contrast. No shadows
gold. In-Game asset. 2d. High contrast. No shadows
power up. In-Game asset. 2d. High contrast. No shadows