/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Bomb = Container.expand(function () { var self = Container.call(this); var bombGraphics = self.attachAsset('bomb', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 10 + Math.random() * 6; self.update = function () { self.y += self.speed; }; return self; }); var Fruit = Container.expand(function (fruitType) { var self = Container.call(this); var fruitGraphics = self.attachAsset(fruitType, { anchorX: 0.5, anchorY: 0.5 }); self.fruitType = fruitType; self.speed = 8 + Math.random() * 5; self.update = function () { self.y += self.speed; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 12; self.fruitCount = 0; self.currentFruitType = null; self.transformed = false; self.moveLeft = function () { if (self.x > 60) { self.x -= self.speed; } }; self.moveRight = function () { if (self.x < 2048 - 60) { self.x += self.speed; } }; self.collectFruit = function (fruitType) { if (self.currentFruitType === null || self.currentFruitType === fruitType) { self.currentFruitType = fruitType; self.fruitCount++; LK.getSound('collect').play(); if (self.fruitCount >= 5) { self.transform(fruitType); } } else { self.resetProgress(); } updateCounterText(); }; self.resetProgress = function () { self.fruitCount = 0; self.currentFruitType = null; self.transformed = false; // Reset to original player graphics if transformed if (self.transformed) { self.removeChild(playerGraphics); playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); } }; self.transform = function (fruitType) { self.transformed = true; LK.getSound('transform').play(); // Track transformation transformationCount++; transformationResults.push(fruitType + '_' + Math.floor((gameTimeLimit - (gameTimeLimit - gameTimer)) / 60)); // Remove old graphics and add new fruit graphics self.removeChild(playerGraphics); playerGraphics = self.attachAsset(fruitType, { anchorX: 0.5, anchorY: 0.5 }); LK.setScore(LK.getScore() + 100); scoreText.setText('Skor: ' + LK.getScore()); tween(playerGraphics, { scaleX: 1.3, scaleY: 1.3 }, { duration: 200, easing: tween.easeOut, onFinish: function onFinish() { tween(playerGraphics, { scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeIn }); } }); self.resetProgress(); }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ // Add tomato background var tomatoBackground = game.addChild(LK.getAsset('tomato_bg', { anchorX: 0, anchorY: 0 })); tomatoBackground.x = 0; tomatoBackground.y = 0; var player; var fruits = []; var bombs = []; var gameRunning = false; // Start with game not running var gameStarted = false; // Track if game has started var leftPressed = false; var rightPressed = false; var spawnTimer = 0; var scoreText; var counterText; var playButton; var stopButton; var startMenu; var pauseMenu; var gamePaused = false; var gameTimer = 0; var gameTimeLimit = 90 * 60; // 1.5 minutes in ticks (60 FPS) var timerText; var transformationCount = 0; var transformationResults = []; // Music control variables var isMusicOn = storage.musicEnabled !== false; // Default to true var musicButton; // Create start menu startMenu = game.addChild(new Container()); // Create play button playButton = startMenu.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 })); playButton.x = 2048 / 2 - 200; playButton.y = 2732 / 2; // Add button labels var playText = new Text2('OYNA', { size: 80, fill: 0x00FF00 }); playText.anchor.set(0.5, 0.5); playText.x = playButton.x; playText.y = playButton.y + 150; startMenu.addChild(playText); // Create music toggle button musicButton = startMenu.addChild(LK.getAsset('apple', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.5, scaleY: 1.5 })); musicButton.x = 2048 / 2 + 200; musicButton.y = 2732 / 2; // Music button label var musicText = new Text2(isMusicOn ? 'MÜZİK AÇIK' : 'MÜZİK KAPALI', { size: 60, fill: isMusicOn ? 0x00FF00 : 0xFF0000 }); musicText.anchor.set(0.5, 0.5); musicText.x = musicButton.x; musicText.y = musicButton.y + 120; startMenu.addChild(musicText); // Create pause menu (hidden initially) pauseMenu = game.addChild(new Container()); pauseMenu.visible = false; // Pause menu background var pauseBg = pauseMenu.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5, scaleX: 12, scaleY: 8 })); pauseBg.x = 2048 / 2; pauseBg.y = 2732 / 2; pauseBg.alpha = 0.9; // Continue button var continueButton = pauseMenu.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2 })); continueButton.x = 2048 / 2 - 150; continueButton.y = 2732 / 2; // Main menu button var mainMenuButton = pauseMenu.addChild(LK.getAsset('bomb', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2 })); mainMenuButton.x = 2048 / 2 + 150; mainMenuButton.y = 2732 / 2; // Pause menu text var pauseTitleText = new Text2('OYUN DURAKLATILDI', { size: 60, fill: 0xFFFFFF }); pauseTitleText.anchor.set(0.5, 0.5); pauseTitleText.x = 2048 / 2; pauseTitleText.y = 2732 / 2 - 150; pauseMenu.addChild(pauseTitleText); var continueText = new Text2('DEVAM ET', { size: 50, fill: 0x00FF00 }); continueText.anchor.set(0.5, 0.5); continueText.x = continueButton.x; continueText.y = continueButton.y + 100; pauseMenu.addChild(continueText); var mainMenuText = new Text2('ANA MENÜ', { size: 50, fill: 0xFF0000 }); mainMenuText.anchor.set(0.5, 0.5); mainMenuText.x = mainMenuButton.x; mainMenuText.y = mainMenuButton.y + 100; pauseMenu.addChild(mainMenuText); // Initialize player (hidden initially) player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 - 200; player.visible = false; // Initialize UI (hidden initially) scoreText = new Text2('Skor: 0', { size: 60, fill: 0xFFFFFF }); scoreText.anchor.set(0, 0); LK.gui.topLeft.addChild(scoreText); scoreText.x = 120; scoreText.y = 20; scoreText.visible = false; counterText = new Text2('Topla: 0/5', { size: 50, fill: 0xFFFFFF }); counterText.anchor.set(0.5, 0); LK.gui.top.addChild(counterText); counterText.y = 100; counterText.visible = false; timerText = new Text2('Süre: 1:30', { size: 50, fill: 0xFFFF00 }); timerText.anchor.set(1, 0); LK.gui.topRight.addChild(timerText); timerText.x = -20; timerText.y = 20; timerText.visible = false; function updateCounterText() { var fruitNameMap = { 'apple': 'elma', 'orange': 'portakal', 'banana': 'muz', 'grape': 'üzüm', 'kivi': 'kivi', 'armut': 'armut', 'ananas': 'ananas', 'karpuz': 'karpuz' }; var fruitName = fruitNameMap[player.currentFruitType] || 'meyveler'; counterText.setText(fruitName + ': ' + player.fruitCount + '/5'); } function toggleMusic() { isMusicOn = !isMusicOn; storage.musicEnabled = isMusicOn; // Update button appearance musicText.setText(isMusicOn ? 'MÜZİK AÇIK' : 'MÜZİK KAPALI'); musicText.fill = isMusicOn ? 0x00FF00 : 0xFF0000; // Control music playback if (isMusicOn) { if (!gameStarted) { LK.playMusic('menuMusic'); } else if (gameRunning && !gamePaused) { LK.playMusic('bgMusic'); } } else { LK.stopMusic(); } } function pauseGame() { gamePaused = true; gameRunning = false; pauseMenu.visible = true; LK.stopMusic(); } function resumeGame() { gamePaused = false; gameRunning = true; pauseMenu.visible = false; if (isMusicOn) { LK.playMusic('bgMusic'); } } function returnToMainMenu() { gamePaused = false; gameRunning = false; gameStarted = false; // Hide pause menu and game elements pauseMenu.visible = false; player.visible = false; scoreText.visible = false; counterText.visible = false; timerText.visible = false; // Show start menu startMenu.visible = true; // Clear game objects for (var i = fruits.length - 1; i >= 0; i--) { fruits[i].destroy(); } fruits = []; for (var j = bombs.length - 1; j >= 0; j--) { bombs[j].destroy(); } bombs = []; // Reset player player.resetProgress(); player.x = 2048 / 2; player.y = 2732 - 200; LK.setScore(0); scoreText.setText('Skor: 0'); updateCounterText(); // Start menu music LK.stopMusic(); if (isMusicOn) { LK.playMusic('menuMusic'); } } function startGame() { gameStarted = true; gameRunning = true; gameTimer = 0; transformationCount = 0; transformationResults = []; // Hide start menu startMenu.visible = false; // Show player player.visible = true; // Stop menu music and start background music LK.stopMusic(); if (isMusicOn) { LK.playMusic('bgMusic'); } // Show UI elements scoreText.visible = true; counterText.visible = true; timerText.visible = true; } // Touch controls for full screen mobile play var touchStartX = null; var touchCurrentX = null; game.down = function (x, y, obj) { if (gamePaused) { // Handle pause menu interactions var continueButtonBounds = { left: 2048 / 2 - 150 - 80, right: 2048 / 2 - 150 + 80, top: 2732 / 2 - 80, bottom: 2732 / 2 + 80 }; var mainMenuButtonBounds = { left: 2048 / 2 + 150 - 80, right: 2048 / 2 + 150 + 80, top: 2732 / 2 - 80, bottom: 2732 / 2 + 80 }; if (x >= continueButtonBounds.left && x <= continueButtonBounds.right && y >= continueButtonBounds.top && y <= continueButtonBounds.bottom) { resumeGame(); } else if (x >= mainMenuButtonBounds.left && x <= mainMenuButtonBounds.right && y >= mainMenuButtonBounds.top && y <= mainMenuButtonBounds.bottom) { returnToMainMenu(); } } else if (!gameStarted) { // Check if play button was clicked var playButtonBounds = { left: playButton.x - 100, right: playButton.x + 100, top: playButton.y - 100, bottom: playButton.y + 100 }; // Check if music button was clicked var musicButtonBounds = { left: musicButton.x - 100, right: musicButton.x + 100, top: musicButton.y - 100, bottom: musicButton.y + 100 }; if (x >= playButtonBounds.left && x <= playButtonBounds.right && y >= playButtonBounds.top && y <= playButtonBounds.bottom) { // Start game startGame(); } else if (x >= musicButtonBounds.left && x <= musicButtonBounds.right && y >= musicButtonBounds.top && y <= musicButtonBounds.bottom) { // Toggle music toggleMusic(); } } else if (gameStarted && gameRunning) { // Normal touch controls for gameplay touchStartX = x; touchCurrentX = x; } }; game.move = function (x, y, obj) { if (gameStarted && gameRunning && !gamePaused) { touchCurrentX = x; // Immediate player positioning for full screen responsiveness if (x < 2048 / 2) { leftPressed = true; rightPressed = false; } else { leftPressed = false; rightPressed = true; } } else if (touchStartX !== null && !gamePaused) { touchCurrentX = x; } }; game.up = function (x, y, obj) { touchStartX = null; touchCurrentX = null; }; function spawnFruit() { var fruitTypes = ['armut', 'orange', 'banana', 'grape', 'kivi', 'armut', 'ananas', 'karpuz']; var randomType = fruitTypes[Math.floor(Math.random() * fruitTypes.length)]; var fruit = new Fruit(randomType); fruit.x = Math.random() * (2048 - 160) + 80; fruit.y = -80; fruits.push(fruit); game.addChild(fruit); } function spawnBomb() { var bomb = new Bomb(); bomb.x = Math.random() * (2048 - 180) + 90; bomb.y = -90; bombs.push(bomb); game.addChild(bomb); } game.update = function () { if (!gameStarted || !gameRunning || gamePaused) return; // Update game timer gameTimer++; var remainingTime = gameTimeLimit - gameTimer; var minutes = Math.floor(remainingTime / (60 * 60)); var seconds = Math.floor(remainingTime % (60 * 60) / 60); timerText.setText('Süre: ' + minutes + ':' + (seconds < 10 ? '0' : '') + seconds); // Check if time is up if (remainingTime <= 0) { gameRunning = false; showTransformationResults(); return; } // Handle touch movement for full screen play if (touchStartX !== null && touchCurrentX !== null) { var deltaX = touchCurrentX - touchStartX; if (deltaX < -30) { player.moveLeft(); } else if (deltaX > 30) { player.moveRight(); } } else { // Direct touch positioning for better full screen control if (touchCurrentX !== null) { if (touchCurrentX < player.x - 50) { player.moveLeft(); } else if (touchCurrentX > player.x + 50) { player.moveRight(); } } } // Spawn objects spawnTimer++; if (spawnTimer % 80 === 0) { spawnFruit(); } if (spawnTimer % 150 === 0) { spawnBomb(); } // Update and check fruits for (var i = fruits.length - 1; i >= 0; i--) { var fruit = fruits[i]; if (fruit.lastY === undefined) fruit.lastY = fruit.y; // Remove off-screen fruits if (fruit.lastY <= 2732 && fruit.y > 2732) { fruit.destroy(); fruits.splice(i, 1); continue; } // Check collision with player if (fruit.intersects(player)) { player.collectFruit(fruit.fruitType); LK.setScore(LK.getScore() + 10); scoreText.setText('Skor: ' + LK.getScore()); fruit.destroy(); fruits.splice(i, 1); continue; } fruit.lastY = fruit.y; } // Update and check bombs for (var j = bombs.length - 1; j >= 0; j--) { var bomb = bombs[j]; if (bomb.lastY === undefined) bomb.lastY = bomb.y; // Remove off-screen bombs if (bomb.lastY <= 2732 && bomb.y > 2732) { bomb.destroy(); bombs.splice(j, 1); continue; } // Check collision with player if (bomb.intersects(player)) { LK.getSound('explode').play(); LK.stopMusic(); if (isMusicOn) { LK.playMusic('sadMusic'); } gameRunning = false; LK.effects.flashScreen(0xff0000, 1000); showDeathMenu(); bomb.destroy(); bombs.splice(j, 1); continue; } bomb.lastY = bomb.y; } }; function showDeathMenu() { // Create death menu var deathMenu = game.addChild(new Container()); // Background var deathBg = deathMenu.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5, scaleX: 12, scaleY: 8 })); deathBg.x = 2048 / 2; deathBg.y = 2732 / 2; deathBg.alpha = 0.9; deathBg.tint = 0x800000; // Dark red tint // Death title var deathTitleText = new Text2('BOMBAYA ÇARPTIN!', { size: 70, fill: 0xFF0000 }); deathTitleText.anchor.set(0.5, 0.5); deathTitleText.x = 2048 / 2; deathTitleText.y = 2732 / 2 - 150; deathMenu.addChild(deathTitleText); // Retry button var retryButton = deathMenu.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2 })); retryButton.x = 2048 / 2 - 200; retryButton.y = 2732 / 2; // Main menu button for death screen var deathMainMenuButton = deathMenu.addChild(LK.getAsset('bomb', { anchorX: 0.5, anchorY: 0.5, scaleX: 1.2, scaleY: 1.2 })); deathMainMenuButton.x = 2048 / 2 + 200; deathMainMenuButton.y = 2732 / 2; // Button labels var retryText = new Text2('TEKRAR OYNA', { size: 50, fill: 0x00FF00 }); retryText.anchor.set(0.5, 0.5); retryText.x = retryButton.x; retryText.y = retryButton.y + 100; deathMenu.addChild(retryText); var deathMainMenuText = new Text2('ANA MENÜYE DÖN', { size: 50, fill: 0xFF0000 }); deathMainMenuText.anchor.set(0.5, 0.5); deathMainMenuText.x = deathMainMenuButton.x; deathMainMenuText.y = deathMainMenuButton.y + 100; deathMenu.addChild(deathMainMenuText); // Handle death menu clicks var originalDown = game.down; game.down = function (x, y, obj) { // Check retry button var retryButtonBounds = { left: 2048 / 2 - 200 - 80, right: 2048 / 2 - 200 + 80, top: 2732 / 2 - 80, bottom: 2732 / 2 + 80 }; // Check main menu button var deathMainMenuButtonBounds = { left: 2048 / 2 + 200 - 80, right: 2048 / 2 + 200 + 80, top: 2732 / 2 - 80, bottom: 2732 / 2 + 80 }; if (x >= retryButtonBounds.left && x <= retryButtonBounds.right && y >= retryButtonBounds.top && y <= retryButtonBounds.bottom) { // Restart game deathMenu.destroy(); game.down = originalDown; restartGame(); } else if (x >= deathMainMenuButtonBounds.left && x <= deathMainMenuButtonBounds.right && y >= deathMainMenuButtonBounds.top && y <= deathMainMenuButtonBounds.bottom) { // Return to main menu deathMenu.destroy(); game.down = originalDown; returnToMainMenu(); } }; } function restartGame() { // Clear all game objects for (var i = fruits.length - 1; i >= 0; i--) { fruits[i].destroy(); } fruits = []; for (var j = bombs.length - 1; j >= 0; j--) { bombs[j].destroy(); } bombs = []; // Reset player player.resetProgress(); player.x = 2048 / 2; player.y = 2732 - 200; // Reset game state LK.setScore(0); scoreText.setText('Skor: 0'); updateCounterText(); gameTimer = 0; transformationCount = 0; transformationResults = []; spawnTimer = 0; // Start game again gameRunning = true; LK.stopMusic(); if (isMusicOn) { LK.playMusic('bgMusic'); } } function showTransformationResults() { // Store results in persistent storage storage.lastGameTransformations = transformationCount; storage.lastGameResults = transformationResults; // Create results display var resultsContainer = game.addChild(new Container()); // Background var resultsBg = resultsContainer.addChild(LK.getAsset('player', { anchorX: 0.5, anchorY: 0.5, scaleX: 15, scaleY: 15 })); resultsBg.x = 2048 / 2; resultsBg.y = 2732 / 2; resultsBg.alpha = 0.8; // Title var titleText = new Text2('1,5 Dakika Sonuçları', { size: 80, fill: 0xFFFFFF }); titleText.anchor.set(0.5, 0.5); titleText.x = 2048 / 2; titleText.y = 2732 / 2 - 300; resultsContainer.addChild(titleText); // Total transformations var totalText = new Text2('Toplam Dönüşüm: ' + transformationCount, { size: 60, fill: 0x00FF00 }); totalText.anchor.set(0.5, 0.5); totalText.x = 2048 / 2; totalText.y = 2732 / 2 - 200; resultsContainer.addChild(totalText); // Detailed results var detailsY = 2732 / 2 - 100; for (var i = 0; i < Math.min(transformationResults.length, 15); i++) { var resultData = transformationResults[i].split('_'); var fruitType = resultData[0]; var timeValue = resultData[1]; var detailText = new Text2(i + 1 + '. ' + fruitType + ' - ' + timeValue + 's', { size: 35, fill: 0xFFFFFF }); detailText.anchor.set(0.5, 0.5); detailText.x = 2048 / 2; detailText.y = detailsY + i * 40; resultsContainer.addChild(detailText); } // Show game over after 3 seconds LK.setTimeout(function () { LK.showGameOver(); }, 3000); } // Initialize counter text updateCounterText(); // Start peaceful menu music if (isMusicOn) { LK.playMusic('menuMusic'); }
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
var storage = LK.import("@upit/storage.v1");
/****
* Classes
****/
var Bomb = Container.expand(function () {
var self = Container.call(this);
var bombGraphics = self.attachAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10 + Math.random() * 6;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Fruit = Container.expand(function (fruitType) {
var self = Container.call(this);
var fruitGraphics = self.attachAsset(fruitType, {
anchorX: 0.5,
anchorY: 0.5
});
self.fruitType = fruitType;
self.speed = 8 + Math.random() * 5;
self.update = function () {
self.y += self.speed;
};
return self;
});
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 12;
self.fruitCount = 0;
self.currentFruitType = null;
self.transformed = false;
self.moveLeft = function () {
if (self.x > 60) {
self.x -= self.speed;
}
};
self.moveRight = function () {
if (self.x < 2048 - 60) {
self.x += self.speed;
}
};
self.collectFruit = function (fruitType) {
if (self.currentFruitType === null || self.currentFruitType === fruitType) {
self.currentFruitType = fruitType;
self.fruitCount++;
LK.getSound('collect').play();
if (self.fruitCount >= 5) {
self.transform(fruitType);
}
} else {
self.resetProgress();
}
updateCounterText();
};
self.resetProgress = function () {
self.fruitCount = 0;
self.currentFruitType = null;
self.transformed = false;
// Reset to original player graphics if transformed
if (self.transformed) {
self.removeChild(playerGraphics);
playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
}
};
self.transform = function (fruitType) {
self.transformed = true;
LK.getSound('transform').play();
// Track transformation
transformationCount++;
transformationResults.push(fruitType + '_' + Math.floor((gameTimeLimit - (gameTimeLimit - gameTimer)) / 60));
// Remove old graphics and add new fruit graphics
self.removeChild(playerGraphics);
playerGraphics = self.attachAsset(fruitType, {
anchorX: 0.5,
anchorY: 0.5
});
LK.setScore(LK.getScore() + 100);
scoreText.setText('Skor: ' + LK.getScore());
tween(playerGraphics, {
scaleX: 1.3,
scaleY: 1.3
}, {
duration: 200,
easing: tween.easeOut,
onFinish: function onFinish() {
tween(playerGraphics, {
scaleX: 1,
scaleY: 1
}, {
duration: 200,
easing: tween.easeIn
});
}
});
self.resetProgress();
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87ceeb
});
/****
* Game Code
****/
// Add tomato background
var tomatoBackground = game.addChild(LK.getAsset('tomato_bg', {
anchorX: 0,
anchorY: 0
}));
tomatoBackground.x = 0;
tomatoBackground.y = 0;
var player;
var fruits = [];
var bombs = [];
var gameRunning = false; // Start with game not running
var gameStarted = false; // Track if game has started
var leftPressed = false;
var rightPressed = false;
var spawnTimer = 0;
var scoreText;
var counterText;
var playButton;
var stopButton;
var startMenu;
var pauseMenu;
var gamePaused = false;
var gameTimer = 0;
var gameTimeLimit = 90 * 60; // 1.5 minutes in ticks (60 FPS)
var timerText;
var transformationCount = 0;
var transformationResults = [];
// Music control variables
var isMusicOn = storage.musicEnabled !== false; // Default to true
var musicButton;
// Create start menu
startMenu = game.addChild(new Container());
// Create play button
playButton = startMenu.addChild(LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
}));
playButton.x = 2048 / 2 - 200;
playButton.y = 2732 / 2;
// Add button labels
var playText = new Text2('OYNA', {
size: 80,
fill: 0x00FF00
});
playText.anchor.set(0.5, 0.5);
playText.x = playButton.x;
playText.y = playButton.y + 150;
startMenu.addChild(playText);
// Create music toggle button
musicButton = startMenu.addChild(LK.getAsset('apple', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.5,
scaleY: 1.5
}));
musicButton.x = 2048 / 2 + 200;
musicButton.y = 2732 / 2;
// Music button label
var musicText = new Text2(isMusicOn ? 'MÜZİK AÇIK' : 'MÜZİK KAPALI', {
size: 60,
fill: isMusicOn ? 0x00FF00 : 0xFF0000
});
musicText.anchor.set(0.5, 0.5);
musicText.x = musicButton.x;
musicText.y = musicButton.y + 120;
startMenu.addChild(musicText);
// Create pause menu (hidden initially)
pauseMenu = game.addChild(new Container());
pauseMenu.visible = false;
// Pause menu background
var pauseBg = pauseMenu.addChild(LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 12,
scaleY: 8
}));
pauseBg.x = 2048 / 2;
pauseBg.y = 2732 / 2;
pauseBg.alpha = 0.9;
// Continue button
var continueButton = pauseMenu.addChild(LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
}));
continueButton.x = 2048 / 2 - 150;
continueButton.y = 2732 / 2;
// Main menu button
var mainMenuButton = pauseMenu.addChild(LK.getAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
}));
mainMenuButton.x = 2048 / 2 + 150;
mainMenuButton.y = 2732 / 2;
// Pause menu text
var pauseTitleText = new Text2('OYUN DURAKLATILDI', {
size: 60,
fill: 0xFFFFFF
});
pauseTitleText.anchor.set(0.5, 0.5);
pauseTitleText.x = 2048 / 2;
pauseTitleText.y = 2732 / 2 - 150;
pauseMenu.addChild(pauseTitleText);
var continueText = new Text2('DEVAM ET', {
size: 50,
fill: 0x00FF00
});
continueText.anchor.set(0.5, 0.5);
continueText.x = continueButton.x;
continueText.y = continueButton.y + 100;
pauseMenu.addChild(continueText);
var mainMenuText = new Text2('ANA MENÜ', {
size: 50,
fill: 0xFF0000
});
mainMenuText.anchor.set(0.5, 0.5);
mainMenuText.x = mainMenuButton.x;
mainMenuText.y = mainMenuButton.y + 100;
pauseMenu.addChild(mainMenuText);
// Initialize player (hidden initially)
player = game.addChild(new Player());
player.x = 2048 / 2;
player.y = 2732 - 200;
player.visible = false;
// Initialize UI (hidden initially)
scoreText = new Text2('Skor: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreText.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreText);
scoreText.x = 120;
scoreText.y = 20;
scoreText.visible = false;
counterText = new Text2('Topla: 0/5', {
size: 50,
fill: 0xFFFFFF
});
counterText.anchor.set(0.5, 0);
LK.gui.top.addChild(counterText);
counterText.y = 100;
counterText.visible = false;
timerText = new Text2('Süre: 1:30', {
size: 50,
fill: 0xFFFF00
});
timerText.anchor.set(1, 0);
LK.gui.topRight.addChild(timerText);
timerText.x = -20;
timerText.y = 20;
timerText.visible = false;
function updateCounterText() {
var fruitNameMap = {
'apple': 'elma',
'orange': 'portakal',
'banana': 'muz',
'grape': 'üzüm',
'kivi': 'kivi',
'armut': 'armut',
'ananas': 'ananas',
'karpuz': 'karpuz'
};
var fruitName = fruitNameMap[player.currentFruitType] || 'meyveler';
counterText.setText(fruitName + ': ' + player.fruitCount + '/5');
}
function toggleMusic() {
isMusicOn = !isMusicOn;
storage.musicEnabled = isMusicOn;
// Update button appearance
musicText.setText(isMusicOn ? 'MÜZİK AÇIK' : 'MÜZİK KAPALI');
musicText.fill = isMusicOn ? 0x00FF00 : 0xFF0000;
// Control music playback
if (isMusicOn) {
if (!gameStarted) {
LK.playMusic('menuMusic');
} else if (gameRunning && !gamePaused) {
LK.playMusic('bgMusic');
}
} else {
LK.stopMusic();
}
}
function pauseGame() {
gamePaused = true;
gameRunning = false;
pauseMenu.visible = true;
LK.stopMusic();
}
function resumeGame() {
gamePaused = false;
gameRunning = true;
pauseMenu.visible = false;
if (isMusicOn) {
LK.playMusic('bgMusic');
}
}
function returnToMainMenu() {
gamePaused = false;
gameRunning = false;
gameStarted = false;
// Hide pause menu and game elements
pauseMenu.visible = false;
player.visible = false;
scoreText.visible = false;
counterText.visible = false;
timerText.visible = false;
// Show start menu
startMenu.visible = true;
// Clear game objects
for (var i = fruits.length - 1; i >= 0; i--) {
fruits[i].destroy();
}
fruits = [];
for (var j = bombs.length - 1; j >= 0; j--) {
bombs[j].destroy();
}
bombs = [];
// Reset player
player.resetProgress();
player.x = 2048 / 2;
player.y = 2732 - 200;
LK.setScore(0);
scoreText.setText('Skor: 0');
updateCounterText();
// Start menu music
LK.stopMusic();
if (isMusicOn) {
LK.playMusic('menuMusic');
}
}
function startGame() {
gameStarted = true;
gameRunning = true;
gameTimer = 0;
transformationCount = 0;
transformationResults = [];
// Hide start menu
startMenu.visible = false;
// Show player
player.visible = true;
// Stop menu music and start background music
LK.stopMusic();
if (isMusicOn) {
LK.playMusic('bgMusic');
}
// Show UI elements
scoreText.visible = true;
counterText.visible = true;
timerText.visible = true;
}
// Touch controls for full screen mobile play
var touchStartX = null;
var touchCurrentX = null;
game.down = function (x, y, obj) {
if (gamePaused) {
// Handle pause menu interactions
var continueButtonBounds = {
left: 2048 / 2 - 150 - 80,
right: 2048 / 2 - 150 + 80,
top: 2732 / 2 - 80,
bottom: 2732 / 2 + 80
};
var mainMenuButtonBounds = {
left: 2048 / 2 + 150 - 80,
right: 2048 / 2 + 150 + 80,
top: 2732 / 2 - 80,
bottom: 2732 / 2 + 80
};
if (x >= continueButtonBounds.left && x <= continueButtonBounds.right && y >= continueButtonBounds.top && y <= continueButtonBounds.bottom) {
resumeGame();
} else if (x >= mainMenuButtonBounds.left && x <= mainMenuButtonBounds.right && y >= mainMenuButtonBounds.top && y <= mainMenuButtonBounds.bottom) {
returnToMainMenu();
}
} else if (!gameStarted) {
// Check if play button was clicked
var playButtonBounds = {
left: playButton.x - 100,
right: playButton.x + 100,
top: playButton.y - 100,
bottom: playButton.y + 100
};
// Check if music button was clicked
var musicButtonBounds = {
left: musicButton.x - 100,
right: musicButton.x + 100,
top: musicButton.y - 100,
bottom: musicButton.y + 100
};
if (x >= playButtonBounds.left && x <= playButtonBounds.right && y >= playButtonBounds.top && y <= playButtonBounds.bottom) {
// Start game
startGame();
} else if (x >= musicButtonBounds.left && x <= musicButtonBounds.right && y >= musicButtonBounds.top && y <= musicButtonBounds.bottom) {
// Toggle music
toggleMusic();
}
} else if (gameStarted && gameRunning) {
// Normal touch controls for gameplay
touchStartX = x;
touchCurrentX = x;
}
};
game.move = function (x, y, obj) {
if (gameStarted && gameRunning && !gamePaused) {
touchCurrentX = x;
// Immediate player positioning for full screen responsiveness
if (x < 2048 / 2) {
leftPressed = true;
rightPressed = false;
} else {
leftPressed = false;
rightPressed = true;
}
} else if (touchStartX !== null && !gamePaused) {
touchCurrentX = x;
}
};
game.up = function (x, y, obj) {
touchStartX = null;
touchCurrentX = null;
};
function spawnFruit() {
var fruitTypes = ['armut', 'orange', 'banana', 'grape', 'kivi', 'armut', 'ananas', 'karpuz'];
var randomType = fruitTypes[Math.floor(Math.random() * fruitTypes.length)];
var fruit = new Fruit(randomType);
fruit.x = Math.random() * (2048 - 160) + 80;
fruit.y = -80;
fruits.push(fruit);
game.addChild(fruit);
}
function spawnBomb() {
var bomb = new Bomb();
bomb.x = Math.random() * (2048 - 180) + 90;
bomb.y = -90;
bombs.push(bomb);
game.addChild(bomb);
}
game.update = function () {
if (!gameStarted || !gameRunning || gamePaused) return;
// Update game timer
gameTimer++;
var remainingTime = gameTimeLimit - gameTimer;
var minutes = Math.floor(remainingTime / (60 * 60));
var seconds = Math.floor(remainingTime % (60 * 60) / 60);
timerText.setText('Süre: ' + minutes + ':' + (seconds < 10 ? '0' : '') + seconds);
// Check if time is up
if (remainingTime <= 0) {
gameRunning = false;
showTransformationResults();
return;
}
// Handle touch movement for full screen play
if (touchStartX !== null && touchCurrentX !== null) {
var deltaX = touchCurrentX - touchStartX;
if (deltaX < -30) {
player.moveLeft();
} else if (deltaX > 30) {
player.moveRight();
}
} else {
// Direct touch positioning for better full screen control
if (touchCurrentX !== null) {
if (touchCurrentX < player.x - 50) {
player.moveLeft();
} else if (touchCurrentX > player.x + 50) {
player.moveRight();
}
}
}
// Spawn objects
spawnTimer++;
if (spawnTimer % 80 === 0) {
spawnFruit();
}
if (spawnTimer % 150 === 0) {
spawnBomb();
}
// Update and check fruits
for (var i = fruits.length - 1; i >= 0; i--) {
var fruit = fruits[i];
if (fruit.lastY === undefined) fruit.lastY = fruit.y;
// Remove off-screen fruits
if (fruit.lastY <= 2732 && fruit.y > 2732) {
fruit.destroy();
fruits.splice(i, 1);
continue;
}
// Check collision with player
if (fruit.intersects(player)) {
player.collectFruit(fruit.fruitType);
LK.setScore(LK.getScore() + 10);
scoreText.setText('Skor: ' + LK.getScore());
fruit.destroy();
fruits.splice(i, 1);
continue;
}
fruit.lastY = fruit.y;
}
// Update and check bombs
for (var j = bombs.length - 1; j >= 0; j--) {
var bomb = bombs[j];
if (bomb.lastY === undefined) bomb.lastY = bomb.y;
// Remove off-screen bombs
if (bomb.lastY <= 2732 && bomb.y > 2732) {
bomb.destroy();
bombs.splice(j, 1);
continue;
}
// Check collision with player
if (bomb.intersects(player)) {
LK.getSound('explode').play();
LK.stopMusic();
if (isMusicOn) {
LK.playMusic('sadMusic');
}
gameRunning = false;
LK.effects.flashScreen(0xff0000, 1000);
showDeathMenu();
bomb.destroy();
bombs.splice(j, 1);
continue;
}
bomb.lastY = bomb.y;
}
};
function showDeathMenu() {
// Create death menu
var deathMenu = game.addChild(new Container());
// Background
var deathBg = deathMenu.addChild(LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 12,
scaleY: 8
}));
deathBg.x = 2048 / 2;
deathBg.y = 2732 / 2;
deathBg.alpha = 0.9;
deathBg.tint = 0x800000; // Dark red tint
// Death title
var deathTitleText = new Text2('BOMBAYA ÇARPTIN!', {
size: 70,
fill: 0xFF0000
});
deathTitleText.anchor.set(0.5, 0.5);
deathTitleText.x = 2048 / 2;
deathTitleText.y = 2732 / 2 - 150;
deathMenu.addChild(deathTitleText);
// Retry button
var retryButton = deathMenu.addChild(LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
}));
retryButton.x = 2048 / 2 - 200;
retryButton.y = 2732 / 2;
// Main menu button for death screen
var deathMainMenuButton = deathMenu.addChild(LK.getAsset('bomb', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
}));
deathMainMenuButton.x = 2048 / 2 + 200;
deathMainMenuButton.y = 2732 / 2;
// Button labels
var retryText = new Text2('TEKRAR OYNA', {
size: 50,
fill: 0x00FF00
});
retryText.anchor.set(0.5, 0.5);
retryText.x = retryButton.x;
retryText.y = retryButton.y + 100;
deathMenu.addChild(retryText);
var deathMainMenuText = new Text2('ANA MENÜYE DÖN', {
size: 50,
fill: 0xFF0000
});
deathMainMenuText.anchor.set(0.5, 0.5);
deathMainMenuText.x = deathMainMenuButton.x;
deathMainMenuText.y = deathMainMenuButton.y + 100;
deathMenu.addChild(deathMainMenuText);
// Handle death menu clicks
var originalDown = game.down;
game.down = function (x, y, obj) {
// Check retry button
var retryButtonBounds = {
left: 2048 / 2 - 200 - 80,
right: 2048 / 2 - 200 + 80,
top: 2732 / 2 - 80,
bottom: 2732 / 2 + 80
};
// Check main menu button
var deathMainMenuButtonBounds = {
left: 2048 / 2 + 200 - 80,
right: 2048 / 2 + 200 + 80,
top: 2732 / 2 - 80,
bottom: 2732 / 2 + 80
};
if (x >= retryButtonBounds.left && x <= retryButtonBounds.right && y >= retryButtonBounds.top && y <= retryButtonBounds.bottom) {
// Restart game
deathMenu.destroy();
game.down = originalDown;
restartGame();
} else if (x >= deathMainMenuButtonBounds.left && x <= deathMainMenuButtonBounds.right && y >= deathMainMenuButtonBounds.top && y <= deathMainMenuButtonBounds.bottom) {
// Return to main menu
deathMenu.destroy();
game.down = originalDown;
returnToMainMenu();
}
};
}
function restartGame() {
// Clear all game objects
for (var i = fruits.length - 1; i >= 0; i--) {
fruits[i].destroy();
}
fruits = [];
for (var j = bombs.length - 1; j >= 0; j--) {
bombs[j].destroy();
}
bombs = [];
// Reset player
player.resetProgress();
player.x = 2048 / 2;
player.y = 2732 - 200;
// Reset game state
LK.setScore(0);
scoreText.setText('Skor: 0');
updateCounterText();
gameTimer = 0;
transformationCount = 0;
transformationResults = [];
spawnTimer = 0;
// Start game again
gameRunning = true;
LK.stopMusic();
if (isMusicOn) {
LK.playMusic('bgMusic');
}
}
function showTransformationResults() {
// Store results in persistent storage
storage.lastGameTransformations = transformationCount;
storage.lastGameResults = transformationResults;
// Create results display
var resultsContainer = game.addChild(new Container());
// Background
var resultsBg = resultsContainer.addChild(LK.getAsset('player', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 15,
scaleY: 15
}));
resultsBg.x = 2048 / 2;
resultsBg.y = 2732 / 2;
resultsBg.alpha = 0.8;
// Title
var titleText = new Text2('1,5 Dakika Sonuçları', {
size: 80,
fill: 0xFFFFFF
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 2732 / 2 - 300;
resultsContainer.addChild(titleText);
// Total transformations
var totalText = new Text2('Toplam Dönüşüm: ' + transformationCount, {
size: 60,
fill: 0x00FF00
});
totalText.anchor.set(0.5, 0.5);
totalText.x = 2048 / 2;
totalText.y = 2732 / 2 - 200;
resultsContainer.addChild(totalText);
// Detailed results
var detailsY = 2732 / 2 - 100;
for (var i = 0; i < Math.min(transformationResults.length, 15); i++) {
var resultData = transformationResults[i].split('_');
var fruitType = resultData[0];
var timeValue = resultData[1];
var detailText = new Text2(i + 1 + '. ' + fruitType + ' - ' + timeValue + 's', {
size: 35,
fill: 0xFFFFFF
});
detailText.anchor.set(0.5, 0.5);
detailText.x = 2048 / 2;
detailText.y = detailsY + i * 40;
resultsContainer.addChild(detailText);
}
// Show game over after 3 seconds
LK.setTimeout(function () {
LK.showGameOver();
}, 3000);
}
// Initialize counter text
updateCounterText();
// Start peaceful menu music
if (isMusicOn) {
LK.playMusic('menuMusic');
}
bomba. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
Elma. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
muz. In-Game asset. 2d. High contrast. No shadows
portakal. In-Game asset. 2d. High contrast. No shadows
Üzüm. In-Game asset. 2d. High contrast. No shadows
gülen domates. In-Game asset. 2d. High contrast. No shadows
orman büyük olsun. In-Game asset. 2d. High contrast. No shadows
kivi. In-Game asset. 2d. High contrast. No shadows
Ananas. In-Game asset. 2d. High contrast. No shadows
Armut. In-Game asset. 2d. High contrast. No shadows
karpuz. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat