/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// Bonus
var Bonus = Container.expand(function () {
var self = Container.call(this);
var bonusSprite = self.attachAsset('bonus', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 14 + Math.random() * 6;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Hugo karakteri
var Hugo = Container.expand(function () {
var self = Container.call(this);
var hugoSprite = self.attachAsset('hugo', {
anchorX: 0.5,
anchorY: 0.5
});
self.type = 'hugo';
self.update = function () {
// Karakterin update fonksiyonu, şimdilik gerek yok
};
return self;
});
// Engel
var Obstacle = Container.expand(function () {
var self = Container.call(this);
var obsSprite = self.attachAsset('obstacle', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 18 + Math.random() * 8; // Hız rastgele biraz değişsin
self.update = function () {
self.y += self.speed;
};
return self;
});
// Tolga Abi karakteri
var Tolga = Container.expand(function () {
var self = Container.call(this);
var tolgaSprite = self.attachAsset('tolga', {
anchorX: 0.5,
anchorY: 0.5
});
self.type = 'tolga';
self.update = function () {
// Karakterin update fonksiyonu, şimdilik gerek yok
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x2d1b0b // koyu kahverengi mağara atmosferi
});
/****
* Game Code
****/
// Bonus: yeşil elips
// Engel: kırmızı kutu
// Tolga Abi karakteri: turuncu kutu
// Hugo karakteri: mavi kutu
// Oyun alanı boyutları
var GAME_WIDTH = 2048;
var GAME_HEIGHT = 2732;
// Karakterler arası mesafe
var CHAR_GAP = 400;
// Karakterlerin başlangıç konumu
var hugoStartX = GAME_WIDTH / 2 - CHAR_GAP / 2;
var tolgaStartX = GAME_WIDTH / 2 + CHAR_GAP / 2;
var charStartY = GAME_HEIGHT - 400;
// Karakterler
var hugo = new Hugo();
var tolga = new Tolga();
hugo.x = hugoStartX;
hugo.y = charStartY;
tolga.x = tolgaStartX;
tolga.y = charStartY;
game.addChild(hugo);
game.addChild(tolga);
// Karakterlerin hareket sınırları
var minX = 120;
var maxX = GAME_WIDTH - 120;
// Engel ve bonus dizileri
var obstacles = [];
var bonuses = [];
// Skor
var score = 0;
var scoreTxt = new Text2('0', {
size: 120,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
// Oyun zorluğu için sayaç
var tickCount = 0;
var spawnInterval = 60; // Başlangıçta 1 saniyede bir engel/bonus
// Sürükleme için değişkenler
var dragChar = null;
var dragOffsetX = 0;
// Hangi karaktere dokunulduğunu bul
function getTouchedChar(x, y) {
// Hugo'ya yakın mı?
var dxH = Math.abs(hugo.x - x);
var dyH = Math.abs(hugo.y - y);
var hugoDist = Math.sqrt(dxH * dxH + dyH * dyH);
// Tolga'ya yakın mı?
var dxT = Math.abs(tolga.x - x);
var dyT = Math.abs(tolga.y - y);
var tolgaDist = Math.sqrt(dxT * dxT + dyT * dyT);
if (hugoDist < 140 && hugoDist < tolgaDist) return hugo;
if (tolgaDist < 140 && tolgaDist < hugoDist) return tolga;
return null;
}
// Oyun alanında karakterleri sürükleme
game.down = function (x, y, obj) {
var _char = getTouchedChar(x, y);
if (_char) {
dragChar = _char;
dragOffsetX = _char.x - x;
}
};
game.move = function (x, y, obj) {
if (dragChar) {
var newX = x + dragOffsetX;
// Sınırları aşmasın
if (newX < minX) newX = minX;
if (newX > maxX) newX = maxX;
dragChar.x = newX;
}
};
game.up = function (x, y, obj) {
dragChar = null;
};
// Engel ve bonus üretimi
function spawnObstacle() {
var obs = new Obstacle();
// Rastgele x: iki karakterin üstünde veya ortada
var lane = Math.floor(Math.random() * 3); // 0: sol, 1: sağ, 2: orta
var obsX;
if (lane === 0) obsX = hugoStartX;else if (lane === 1) obsX = tolgaStartX;else obsX = (hugoStartX + tolgaStartX) / 2;
obs.x = obsX;
obs.y = -100;
obstacles.push(obs);
game.addChild(obs);
}
function spawnBonus() {
var bonus = new Bonus();
// Rastgele x: iki karakterin üstünde veya ortada
var lane = Math.floor(Math.random() * 3);
var bonusX;
if (lane === 0) bonusX = hugoStartX;else if (lane === 1) bonusX = tolgaStartX;else bonusX = (hugoStartX + tolgaStartX) / 2;
bonus.x = bonusX;
bonus.y = -100;
bonuses.push(bonus);
game.addChild(bonus);
}
// Çarpışma kontrolü
function checkCollision(a, b) {
return a.intersects(b);
}
// Oyun update
game.update = function () {
tickCount++;
// Engel ve bonus üretimi (zamanla hızlanır)
if (tickCount % spawnInterval === 0) {
spawnObstacle();
if (Math.random() < 0.5) spawnBonus();
// Zamanla daha sık engel gelsin
if (spawnInterval > 24 && tickCount % 600 === 0) {
spawnInterval -= 6;
if (spawnInterval < 18) spawnInterval = 18;
}
}
// Engelleri güncelle
for (var i = obstacles.length - 1; i >= 0; i--) {
var obs = obstacles[i];
obs.update();
// Hugo veya Tolga ile çarpıştı mı?
if (checkCollision(obs, hugo) || checkCollision(obs, tolga)) {
LK.effects.flashScreen(0xff0000, 800);
LK.showGameOver();
return;
}
// Ekran dışına çıktıysa sil
if (obs.y > GAME_HEIGHT + 100) {
obs.destroy();
obstacles.splice(i, 1);
}
}
// Bonusları güncelle
for (var j = bonuses.length - 1; j >= 0; j--) {
var bon = bonuses[j];
bon.update();
// Hugo veya Tolga ile çarpıştı mı?
if (checkCollision(bon, hugo) || checkCollision(bon, tolga)) {
score += 5;
scoreTxt.setText(score);
bon.destroy();
bonuses.splice(j, 1);
continue;
}
// Ekran dışına çıktıysa sil
if (bon.y > GAME_HEIGHT + 100) {
bon.destroy();
bonuses.splice(j, 1);
}
}
// Skor: hayatta kalma süresi
if (tickCount % 30 === 0) {
score += 1;
scoreTxt.setText(score);
}
// Kazanma koşulu: 100 puan
if (score >= 100) {
LK.showYouWin();
}
};
// Karakterleri başa döndür (oyun resetlenince otomatik çalışır)
function resetGame() {
hugo.x = hugoStartX;
hugo.y = charStartY;
tolga.x = tolgaStartX;
tolga.y = charStartY;
score = 0;
scoreTxt.setText(score);
tickCount = 0;
spawnInterval = 60;
for (var i = 0; i < obstacles.length; i++) obstacles[i].destroy();
for (var j = 0; j < bonuses.length; j++) bonuses[j].destroy();
obstacles = [];
bonuses = [];
} ===================================================================
--- original.js
+++ change.js
@@ -62,9 +62,9 @@
/****
* Initialize Game
****/
var game = new LK.Game({
- backgroundColor: 0x222222
+ backgroundColor: 0x2d1b0b // koyu kahverengi mağara atmosferi
});
/****
* Game Code