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ı
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
}
}); ===================================================================
--- original.js
+++ change.js
@@ -250,12 +250,12 @@
/****
* Game Code
****/
-// örnek farklılık için flipY kullandık
-// örnek farklılık için orientation kullandık
-// örnek farklılık için flipX kullandık
// 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,
@@ -411,8 +411,23 @@
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) {
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