/****
* 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ı
self.currentLevel = 1;
self.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
});
// Uzaylı görünümünü güncelle
self.setLevel = function (newLevel) {
if (self.currentLevel === newLevel) return;
self.currentLevel = newLevel;
// Eski sprite'ı kaldır
if (self.alienSprite && self.alienSprite.parent) {
self.removeChild(self.alienSprite);
}
// Yeni sprite'ı ekle
var spriteId = 'alien';
if (newLevel === 2) spriteId = 'alien2';
if (newLevel === 3) spriteId = 'alien3';
if (newLevel >= 4) spriteId = 'alien4';
self.alienSprite = self.attachAsset(spriteId, {
anchorX: 0.5,
anchorY: 0.5
});
// Seviye atladıkça güç ve dayanıklılık artır
self.power = 1 + (self.currentLevel - 1) * 0.7;
self.endurance = 1 + (self.currentLevel - 1) * 0.5;
};
// Hareket hızı
self.baseSpeed = 16;
self.speed = self.baseSpeed;
self.power = 1; // Güç (her seviye artar)
self.endurance = 1; // Dayanıklılık (her seviye artar)
self.magnet = false;
self.magnetRange = 0;
// Güçlendirme aktif mi
self.powerupActive = false;
self.powerupTimer = 0;
// Yeme animasyonu
self.eatAnim = function () {
tween(self.alienSprite, {
scaleX: 1.2,
scaleY: 0.8
}, {
duration: 80,
onFinish: function onFinish() {
tween(self.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
});
/****
* Game Code
****/
// Arka plan resmi asset'i (background)
// örnek farklılık için flipX kullandık
// örnek farklılık için orientation kullandık
// örnek farklılık için flipY kullandık
var bg = LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
});
game.addChild(bg);
// 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;
// Alien gelişim: yenen insan sayısı ve seviye
var eatenCount = 0;
var level = 1;
// 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');
// --- Karakterin boyutu büyüsün (power up animasyonu) ---
tween(alien.alienSprite, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 180,
onFinish: function onFinish() {
tween(alien.alienSprite, {
scaleX: 1,
scaleY: 1
}, {
duration: 300
});
}
});
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();
// --- Tüm insanlar uzaylıya çekilsin ---
for (var i = 0; i < humans.length; i++) {
var h = humans[i];
// Hedefi uzaylının pozisyonu yap, kaçış süresi başlat
h.targetX = alien.x;
h.targetY = alien.y;
h.escapeTimer = 60; // İnsanlar doğrudan uzaylıya çekilecek
h.speed = h.baseSpeed + 12; // Mıknatıs etkisiyle hızlandır
h.dir = 0; // Yatay hareketi durdur
}
}
}
};
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++;
eatenCount++;
// Seviye atlama kontrolü
var newLevel = Math.floor(eatenCount / 10) + 1;
if (newLevel !== level) {
level = newLevel;
alien.setLevel(level);
// Farklı renk efektiyle ekranı flaşla
var flashColor = 0x4a90e2;
if (level === 3) flashColor = 0xffe066;
if (level >= 4) flashColor = 0xff0000;
LK.effects.flashScreen(flashColor, 800);
}
// Sonsuz mod: 3000 insan yense bile oyun devam eder
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);
}
}
// Sonsuz mod: Altın hedefi olsa da oyun bitmez
updateGUI();
};
// Müzik başlat
LK.playMusic('bgm', {
fade: {
start: 0,
end: 1,
duration: 1200
}
}); /****
* 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ı
self.currentLevel = 1;
self.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
});
// Uzaylı görünümünü güncelle
self.setLevel = function (newLevel) {
if (self.currentLevel === newLevel) return;
self.currentLevel = newLevel;
// Eski sprite'ı kaldır
if (self.alienSprite && self.alienSprite.parent) {
self.removeChild(self.alienSprite);
}
// Yeni sprite'ı ekle
var spriteId = 'alien';
if (newLevel === 2) spriteId = 'alien2';
if (newLevel === 3) spriteId = 'alien3';
if (newLevel >= 4) spriteId = 'alien4';
self.alienSprite = self.attachAsset(spriteId, {
anchorX: 0.5,
anchorY: 0.5
});
// Seviye atladıkça güç ve dayanıklılık artır
self.power = 1 + (self.currentLevel - 1) * 0.7;
self.endurance = 1 + (self.currentLevel - 1) * 0.5;
};
// Hareket hızı
self.baseSpeed = 16;
self.speed = self.baseSpeed;
self.power = 1; // Güç (her seviye artar)
self.endurance = 1; // Dayanıklılık (her seviye artar)
self.magnet = false;
self.magnetRange = 0;
// Güçlendirme aktif mi
self.powerupActive = false;
self.powerupTimer = 0;
// Yeme animasyonu
self.eatAnim = function () {
tween(self.alienSprite, {
scaleX: 1.2,
scaleY: 0.8
}, {
duration: 80,
onFinish: function onFinish() {
tween(self.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
});
/****
* Game Code
****/
// Arka plan resmi asset'i (background)
// örnek farklılık için flipX kullandık
// örnek farklılık için orientation kullandık
// örnek farklılık için flipY kullandık
var bg = LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
});
game.addChild(bg);
// 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;
// Alien gelişim: yenen insan sayısı ve seviye
var eatenCount = 0;
var level = 1;
// 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');
// --- Karakterin boyutu büyüsün (power up animasyonu) ---
tween(alien.alienSprite, {
scaleX: 1.5,
scaleY: 1.5
}, {
duration: 180,
onFinish: function onFinish() {
tween(alien.alienSprite, {
scaleX: 1,
scaleY: 1
}, {
duration: 300
});
}
});
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();
// --- Tüm insanlar uzaylıya çekilsin ---
for (var i = 0; i < humans.length; i++) {
var h = humans[i];
// Hedefi uzaylının pozisyonu yap, kaçış süresi başlat
h.targetX = alien.x;
h.targetY = alien.y;
h.escapeTimer = 60; // İnsanlar doğrudan uzaylıya çekilecek
h.speed = h.baseSpeed + 12; // Mıknatıs etkisiyle hızlandır
h.dir = 0; // Yatay hareketi durdur
}
}
}
};
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++;
eatenCount++;
// Seviye atlama kontrolü
var newLevel = Math.floor(eatenCount / 10) + 1;
if (newLevel !== level) {
level = newLevel;
alien.setLevel(level);
// Farklı renk efektiyle ekranı flaşla
var flashColor = 0x4a90e2;
if (level === 3) flashColor = 0xffe066;
if (level >= 4) flashColor = 0xff0000;
LK.effects.flashScreen(flashColor, 800);
}
// Sonsuz mod: 3000 insan yense bile oyun devam eder
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);
}
}
// Sonsuz mod: Altın hedefi olsa da oyun bitmez
updateGUI();
};
// Müzik başlat
LK.playMusic('bgm', {
fade: {
start: 0,
end: 1,
duration: 1200
}
});
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