/**** * 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