Code edit (6 edits merged)
Please save this source code
User prompt
move ground and ground2 10 pixel down
Code edit (8 edits merged)
Please save this source code
User prompt
move ground and ground2 50 pixel down
Code edit (3 edits merged)
Please save this source code
User prompt
move menu_background 10 pixel down
User prompt
move menu_background 20 pixel up
Code edit (1 edits merged)
Please save this source code
Code edit (4 edits merged)
Please save this source code
User prompt
✅ Move menu_background 5 pixels down
User prompt
move menu_background 10 pixel down
User prompt
move menu_background 20 pixel up
User prompt
move menu_background 10 pixel down
User prompt
move menu_background 20 pixel up
User prompt
move menu_background 50 pixel down
User prompt
move menu_background 100 pixel up
User prompt
move menu_background 100 pixel down
User prompt
move menu_background 200 pixel down
User prompt
move menu_background 400 pixel down
User prompt
make menu_background visible
Code edit (1 edits merged)
Please save this source code
User prompt
move menu_background_part 10 pixel down
User prompt
move menu_background_part 20 pixel down
User prompt
move menu_background_part 50 pixel down
User prompt
move menu_background_part 100 pixel up
/**** * Classes ****/ // Character: Dokunulduğunda zıplar. var Character = Container.expand(function () { var self = Container.call(this); self.attachAsset('character', { anchorX: 0.5, anchorY: 0.5 }); self.zIndex = 4; self.velocityY = 0; self.gravity = 0.3; self.jumpStrength = -12; self.width = 350; self.height = 300; self.update = function () { if (gameStarted && !gameOver) { self.velocityY += self.gravity; self.y += self.velocityY; if (self.y > groundY - 100) { self.y = groundY - 100; self.velocityY = 0; if (!self.intersects(underscoreAsset) && !self.preventDeath) { gameOver = true; endGame(); } } var characterLeft = self.x - self.width / 2; var characterRight = self.x + self.width / 2; var characterTop = self.y - self.height / 2; var characterBottom = self.y + self.height / 2; // Ekran dışına çıkma kontrolü if (characterLeft + self.width / 2 < 0 || characterRight - self.width / 2 > screenRight || characterTop + self.height / 2 < 0 || characterBottom - self.height / 2 > groundY) { gameOver = true; endGame(); } // Çarpışma kontrolü: Tube ve Tree game.children.forEach(function (child) { if (child instanceof Tube) { var tubeLeft = child.x - child.bottomTube.width / 2; var tubeRight = child.x + child.bottomTube.width / 2; var safeGapLowerEdge = child.y - child.bottomTube.height; var safeGapUpperEdge = -gapOffset + child.topTube.height; if (self.x + self.width / 2 > tubeLeft && self.x - self.width / 2 < tubeRight) { if (self.y < safeGapUpperEdge || self.y > safeGapLowerEdge) { if (!self.intersects(underscoreAsset) && !self.preventDeath) { // Check if not intersecting with underscore asset and preventDeath is not true gameOver = true; endGame(); } else { // If intersecting with underscore asset or preventDeath is true, do not trigger game over return; } } } } else if (child instanceof Tree) { var treeLeft = child.x - child.bottomTree.width / 2; var treeRight = child.x + child.bottomTree.width / 2; var safeGapLowerEdge = child.y - child.bottomTree.height; var safeGapUpperEdge = -gapOffset + child.topTree.height; if (self.x + self.width / 2 > treeLeft && self.x - self.width / 2 < treeRight) { if (self.y < safeGapUpperEdge || self.y > safeGapLowerEdge) { if (!self.intersects(underscoreAsset) && !self.preventTreeDeath) { // Check if not intersecting with underscore asset and preventTreeDeath is not true gameOver = true; endGame(); } } } } }); } }; self.jump = function () { if (!gameOver) { self.velocityY = self.jumpStrength; LK.getSound('wingeffect').play(); } }; return self; }); // GameOverText class var GameOverText = Container.expand(function () { var self = Container.call(this); self.text = new Text2("GAME OVER", { fontFamily: "Arial", fontSize: 2250, fill: 0xFF0000, align: "center", fontWeight: "bold" }); self.text.anchorX = 0.5; self.text.anchorY = 0.5; self.addChild(self.text); self.zIndex = 100; return self; }); // Tree class: Üst ve alt ağaç oluşturma var Tree = Container.expand(function () { var self = Container.call(this); var bottomUnit = Math.floor(Math.random() * 8) + 1; var topUnit = 9 - bottomUnit; var unitSize = groundY / totalUnits; var bottomHeight = bottomUnit * unitSize; var topHeight = topUnit * unitSize; self.y = groundY; self.bottomTree = self.attachAsset('tree', { anchorX: 0.5, anchorY: 1, width: 300, height: bottomHeight, flipY: false }); self.topTree = self.attachAsset('tree', { anchorX: 0.5, anchorY: 0.5, width: 300, height: topHeight, flipY: false }); self.topTree.rotation = Math.PI; self.topTree.y = -groundY - gapOffset + topHeight / 2; self.zIndex = 1; self.x = 2048 + 800; self.velocityX = -3.6; self.spawned = false; self.prevX = self.x; self.update = function () { if (gameStarted && !gameOver) { self.x += self.velocityX; // Sırayla ağaç-boru üretimi if (!self.spawned && self.prevX > treeSpawnThreshold && self.x <= treeSpawnThreshold) { self.spawned = true; var newTube = new Tube(); newTube.x = 2048 + 800; game.addChild(newTube); lastSpawner = newTube; } self.prevX = self.x; // Geçme sayacı if (!self.passed && character.x > self.x + self.bottomTree.width / 2) { self.passed = true; updateScore(); } } }; return self; }); // Tube class: Üst ve alt boru oluşturma var Tube = Container.expand(function () { var self = Container.call(this); var bottomUnit = Math.floor(Math.random() * 8) + 1; var topUnit = 9 - bottomUnit; var unitSize = groundY / totalUnits; var bottomHeight = bottomUnit * unitSize; var topHeight = topUnit * unitSize; self.y = groundY; self.bottomTube = self.attachAsset('tube', { anchorX: 0.5, anchorY: 1, width: 300, height: bottomHeight, flipY: false }); self.topTube = self.attachAsset('tube', { anchorX: 0.5, anchorY: 0.5, width: 300, height: topHeight, flipY: false }); self.topTube.rotation = Math.PI; self.topTube.y = -groundY - gapOffset + topHeight / 2; self.zIndex = 1; self.x = 2048 + 800; self.velocityX = -3.6; self.spawned = false; self.prevX = self.x; self.update = function () { if (gameStarted && !gameOver) { self.x += self.velocityX; if (self.velocityX === 0) { background.velocityX = 0; bg2.velocityX = 0; } // Sırayla boru-ağaç üretimi if (!self.spawned && self.prevX > tubeSpawnThreshold && self.x <= tubeSpawnThreshold) { self.spawned = true; var newTree = new Tree(); newTree.x = 2048 + 800; game.addChild(newTree); lastSpawner = newTree; } self.prevX = self.x; // Geçme sayacı if (!self.passed && character.x > self.x + self.bottomTube.width / 2) { self.passed = true; updateScore(); } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var underscoreAsset = LK.getAsset('_', { anchorX: 0.5, anchorY: 0.5, x: centerX() + 1000, y: centerY() }); underscoreAsset.zIndex = 15000; game.addChild(underscoreAsset); // Add click event to underscore asset underscoreAsset.on('down', function () { // Increment the touch counter underscoreTouchCount++; // Enable preventDeath if touched 5 times if (underscoreTouchCount >= 5) { character.preventDeath = true; character.preventTreeDeath = true; // New flag to prevent death by tree } }); game.children.sort(function (a, b) { return (a.zIndex || 0) - (b.zIndex || 0); }); function createCloseButton() { // Close button’un kendi container’ı: var closeButtonContainer = new Container(); closeButtonContainer.zIndex = 9999; // Diğer her şeyin üstünde olsun // Close butonu için ellipse (shape) var closeShape = LK.getAsset('button_close', { anchorX: 0.5, anchorY: 0.5, width: 160 * 0.8, // Adjusted width to 80% of original height: 160 * 1.2 // Adjusted height to 120% of original }); closeButtonContainer.addChild(closeShape); // “X” metni var closeLabel = LK.getAsset('justX', { anchorX: 0.5, anchorY: 0.5, x: -6, // Moved 4 pixels left y: 2 // Moved 4 pixels up }); closeButtonContainer.addChild(closeLabel); return closeButtonContainer; } function zoomEffect() { // Mevcut scale değeri (örneğin orijinal 1) var originalScale = character.scale.x; // Zoom in: %20 artış character.scale.set(originalScale * 1.2); // 300ms sonra zoom out yap, orijinal scale'e dön LK.setTimeout(function () { character.scale.set(originalScale); }, 300); } // Dünyayı ters döndürme (flip) fonksiyonu – 0.2 saniye boyunca jump/gravity devre dışı function flipWorld() { if (flipped) { return; } flipped = true; // 0.3 saniye boyunca karakterin jump ve gravity etkilerini devre dışı bırak character.gravity = 0; character.jumpStrength = 0; zoomEffect(); LK.setTimeout(function () { // Ters dünyada: gravity -0.3, jumpStrength 12 character.gravity = -0.3; character.jumpStrength = 12; }, 300); // Dünya elemanlarını ters çevir (sadece scale yöntemiyle) background.scale.y *= -1; bg2.scale.y *= -1; sky.scale.y *= -1; groundAsset.scale.y *= -1; ground2Asset.scale.y *= -1; } // Dünyayı eski hâline döndürme (unflip) fonksiyonu – 0.2 saniye boyunca jump/gravity devre dışı function unflipWorld() { if (!flipped) { return; } flipped = false; character.gravity = 0; character.jumpStrength = 0; zoomEffect(); LK.setTimeout(function () { // Normal dünyada: gravity 0.3, jumpStrength -12 character.gravity = 0.3; character.jumpStrength = -12; }, 300); // Dünya elemanlarını yeniden ters çevirerek orijinal haline döndür background.scale.y *= -1; bg2.scale.y *= -1; sky.scale.y *= -1; groundAsset.scale.y *= -1; ground2Asset.scale.y *= -1; } // Skoru güncelleme fonksiyonu – Her 5 skorda flip/unflip toggle function updateScore() { passCounter++; counterText.setText(passCounter); if (passCounter % 5 === 0) { if (!flipped) { flipWorld(); } else { unflipWorld(); } } } /**** * Global Variables & Helper Functions ****/ var groundY = 2732; var menuOpen = true; var volumeOn = true; var records = []; // En iyi 5 skoru saklar var gapOffset = 400; var gameStarted = false; var gameOver = false; var gameWait = false; // Oyun menüden çıkıp da henüz başlamamışken true olacak. var screenRight = 2048; var totalUnits = 10; var tubeSpawnThreshold, treeSpawnThreshold; var lastSpawner = null; var gameOverText = null; var passCounter = 0; var lastScore = 0; // Global lastScore variable var underscoreTouchCount = 0; // Counter for underscore asset touches // Flip durumunu takip eden bayrak var flipped = false; function centerX() { return 2048 / 2; } function centerY() { return groundY / 2; } tubeSpawnThreshold = centerX() + (screenRight - centerX()) / 2; treeSpawnThreshold = centerX() + 3 * (screenRight - centerX()) / 4; /**** * Menu Setup ****/ var menuContainer = new Container(); menuContainer.zIndex = 200; // Menü arka planları var menuBackground = LK.getAsset('menu_background', { anchorX: 0.5, anchorY: 0.5, x: centerX(), y: centerY() + 635 }); menuBackground.zIndex = 199; menuContainer.addChild(menuBackground); var menuBackgroundPart = LK.getAsset('menu_background_part', { anchorX: 0.5, anchorY: 0.19, x: centerX(), y: centerY() - 870 }); menuBackgroundPart.zIndex = menuBackground.zIndex + 1; // 201 menuContainer.addChild(menuBackgroundPart); // Butonlar ve Label’lar // PLAY var playButton = LK.getAsset('button_play', { anchorX: 0.5, anchorY: 0.5, x: centerX() - 20, y: centerY() + 200 }); playButton.visible = false; menuContainer.addChild(playButton); var playLabel = new Text2("PLAY", { fontFamily: "Arial", fontSize: 630.25 * 1.1 * 1.08 * 1.5, fill: 0xffffff }); playLabel.anchorX = 0.5; playLabel.anchorY = 0.5; playLabel.x = playButton.x - 45; playLabel.y = playButton.y - -25; playLabel.visible = true; playLabel.zIndex = 1000; menuContainer.addChild(playLabel); // VOLUME var volumeButton = LK.getAsset('button_volume', { anchorX: 0.5, anchorY: 0.5, x: centerX() - 28, y: centerY() + 310 }); volumeButton.visible = false; menuContainer.addChild(volumeButton); var volumeLabel = new Text2("VOLUME", { fontFamily: "Arial", fontSize: 63.25 * 1.1 * 1.05 * 1.05 * 1.05 * 1.5, fill: 0xffffff }); volumeLabel.anchorX = 0.5; volumeLabel.anchorY = 0.5; volumeLabel.x = volumeButton.x - 58; volumeLabel.y = volumeButton.y + 30; volumeLabel.visible = true; volumeLabel.zIndex = 1000; menuContainer.addChild(volumeLabel); // CREDITS var creditsButton = LK.getAsset('button_credits', { anchorX: 0.5, anchorY: 0.5, x: centerX() - 30, y: centerY() + 429 }); creditsButton.visible = false; menuContainer.addChild(creditsButton); var creditsLabel = new Text2("CREDITS", { fontFamily: "Arial", fontSize: 630.25 * 1.05 * 1.05 * 1.05 * 1.5, fill: 0xffffff }); creditsLabel.anchorX = 0.5; creditsLabel.anchorY = 0.5; creditsLabel.x = creditsButton.x - 60; creditsLabel.y = creditsButton.y + 28; creditsLabel.visible = true; creditsLabel.zIndex = 1000; menuContainer.addChild(creditsLabel); // RECORDS var recordsButton = LK.getAsset('button_records', { anchorX: 0.5, anchorY: 0.5, x: centerX() - 30, y: centerY() + 540 }); recordsButton.visible = false; menuContainer.addChild(recordsButton); var recordsLabel = new Text2("RECORDS", { fontFamily: "Arial", fontSize: 150.25 * 1.05 * 1.05 * 1.03 * 1.05 * 1.5, fill: 0xffffff }); recordsLabel.anchorX = 0.5; recordsLabel.anchorY = 0.5; recordsLabel.x = recordsButton.x - 67; recordsLabel.y = recordsButton.y + 28; recordsLabel.visible = true; recordsLabel.zIndex = 1000; menuContainer.addChild(recordsLabel); // Ekranda sayacımız var counterText = new Text2('0', { size: 124.2, fill: 0xFFFFFF }); counterText.anchor.set(0, 0); counterText.x = 1315; counterText.y = 15; LK.gui.topLeft.addChild(counterText); // Arkaplanlar var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5, x: centerX(), y: groundY / 2 }); background.zIndex = 0; game.addChild(background); var bg2 = LK.getAsset('bg2', { anchorX: 0.5, anchorY: 0.5, x: centerX() + 2807.2, // Position bg2 to the right of the background y: groundY / 2 }); bg2.zIndex = 0; game.addChild(bg2); var sky = LK.getAsset('sky', { anchorX: 0.5, anchorY: 0, x: centerX(), y: 0 }); sky.zIndex = 2; game.addChild(sky); var groundAsset = LK.getAsset('ground', { anchorX: 0.5, anchorY: 0.5, x: centerX(), y: groundY - -25 }); groundAsset.zIndex = 4.1; game.addChild(groundAsset); var ground2Asset = LK.getAsset('ground2', { anchorX: 0.5, anchorY: 0.5, x: centerX(), y: groundY - 40 }); ground2Asset.zIndex = 0.5; game.addChild(ground2Asset); // Karakteri ekle var character = game.addChild(new Character()); character.x = centerX(); character.y = groundY / 2; // Menü container'ı biraz aşağı kaydırma menuContainer.y += 100; game.addChild(menuContainer); /**** * Helper Functions: Credits, Volume & Records ****/ function createCommonCloseElements(modalWidth, modalHeight) { var closeLabel = LK.getAsset('justX', { anchorX: 0.5, anchorY: 0.5, zIndex: 10000, x: 6, // Moved 4 pixels left y: 16 // Moved 4 pixels up }); var radius = 50; var closeButton = LK.getAsset('button_close', { anchorX: 0.5, anchorY: 0.5, width: radius * 2.3 * 1.2, height: radius * 2.3 * 1.2 }); closeButton.zIndex = 10000; closeButton.x = 0; // Center the button horizontally closeButton.y = 0; // Center the button vertically closeButton.addChild(closeLabel); return { closeLabel: closeLabel, closeButton: closeButton }; } function showCredits() { // Disable menu interaction when modal is opened menuOpen = false; var creditsContainer = new Container(); creditsContainer.zIndex = 300; var modalWidth = 1250, modalHeight = 2000; var bg = LK.getAsset('second_menu', { anchorX: 0.5, anchorY: 0.5, width: modalWidth, height: modalHeight, color: 0x000000 }); bg.x = centerX(); bg.y = centerY(); creditsContainer.addChild(bg); var creditsText = new Text2("Game by\nMustafa Talha ŞEN", { fontFamily: "Arial", fontSize: 5000 * 1.03, fill: 0xffffff, align: "center" }); creditsText.anchorX = 0.5; creditsText.anchorY = 0.5; creditsText.x = centerX() - 359; creditsText.y = centerY() - 800 + 40; creditsText.scale.set(3, 3); creditsContainer.addChild(creditsText); // 5) creditsContainer’ı oyuna ekle game.addChild(creditsContainer); // 6) Close butonunu tamamen bağımsız ekle var closeButton = createCloseButton(); // Örneğin, modal’ın sağ üst köşesi olsun closeButton.x = bg.x + modalWidth / 2 - closeButton.width / 2 - 160; closeButton.y = bg.y - modalHeight / 2 + closeButton.height / 2 + 175; // Tıklanınca hem creditsContainer’ı hem close butonunu kaldır closeButton.on('down', function () { game.removeChild(creditsContainer); game.removeChild(closeButton); // Enable menu interaction when modal is closed menuOpen = true; menuContainer.visible = true; }); // Close butonunu da oyuna ekle game.addChild(closeButton); } function showVolume() { // Disable menu interaction when modal is opened menuOpen = false; var volumeContainer = new Container(); volumeContainer.zIndex = 300; var modalWidth = 1250, modalHeight = 2000; var bg = LK.getAsset('second_menu', { anchorX: 0.5, anchorY: 0.5, width: modalWidth, height: modalHeight, color: 0x000000 }); bg.x = centerX(); bg.y = centerY(); volumeContainer.addChild(bg); var volumeText = new Text2("Volume Settings", { fontFamily: "Arial", fontSize: 5000 * 1.03, fill: 0xffffff }); volumeText.scale.set(3, 3); volumeText.anchorX = 0.5; volumeText.anchorY = 0.5; volumeText.x = centerX() - 275; volumeText.y = centerY() - 800 + 85; volumeContainer.addChild(volumeText); // Container’ı oyuna ekle game.addChild(volumeContainer); // Create a slider for volume control var volumeSlider = new Container(); volumeSlider.zIndex = 301; volumeSlider.visible = false; volumeSlider.x = centerX() - 250 + 250; volumeSlider.y = centerY() - 200 - 150; // Create a background for the slider var sliderBg = LK.getAsset('button_volume', { anchorX: 0.5, anchorY: 0.5, width: 800, height: 100 }); volumeSlider.addChild(sliderBg); // Create a draggable knob for the slider var sliderKnob = LK.getAsset('button_close', { anchorX: 0.5, anchorY: 0.5, width: 100, height: 100 }); sliderKnob.x = 0; // Start in the middle volumeSlider.addChild(sliderKnob); // Add drag functionality to the knob sliderKnob.on('down', function (x, y, obj) { var startX = x; var startKnobX = sliderKnob.x; game.move = function (moveX, moveY, moveObj) { var deltaX = moveX - startX; sliderKnob.x = Math.max(-400, Math.min(400, startKnobX + deltaX)); // Calculate volume based on knob position var volume = (sliderKnob.x + 400) / 800; LK.setVolume(volume); }; game.up = function (upX, upY, upObj) { game.move = null; game.up = null; }; }); volumeContainer.addChild(volumeSlider); // Close butonu bağımsız var closeButton = createCloseButton(); closeButton.x = bg.x + modalWidth / 2 - closeButton.width / 2 - 159; closeButton.y = bg.y - modalHeight / 2 + closeButton.height / 2 + 175; closeButton.on('down', function () { game.removeChild(volumeContainer); game.removeChild(closeButton); // Enable menu interaction when modal is closed menuOpen = true; menuContainer.visible = true; }); game.addChild(closeButton); } function showRecords() { // Disable menu interaction when modal is opened menuOpen = false; var recordsContainer = new Container(); recordsContainer.zIndex = 300; var modalWidth = 1500, modalHeight = 2200; var bg = LK.getAsset('second_menu', { anchorX: 0.5, anchorY: 0.5, width: modalWidth, height: modalHeight, color: 0x000000 }); bg.x = centerX(); bg.y = centerY(); recordsContainer.addChild(bg); var recordsTextStr = "Top Scores:\n"; for (var i = 0; i < records.length; i++) { recordsTextStr += i + 1 + ". " + records[i].score + " (Attempt " + records[i].attempt + ")\n"; } if (records.length === 0) { recordsTextStr += "No records yet."; } recordsTextStr += "\nAttempts: " + records.length; recordsTextStr += "\nLast Score: " + lastScore; var recordsText = new Text2(recordsTextStr, { fontFamily: "Arial", fontSize: 5000 * 1.03, fill: 0xffffff, align: "center" }); recordsText.anchorX = 0.5; recordsText.anchorY = 0.5; recordsText.x = centerX() - 280; recordsText.y = centerY() - 850 + 40; recordsText.scale.set(3, 3); recordsContainer.addChild(recordsText); // Container’ı oyuna ekle game.addChild(recordsContainer); // Close butonu bağımsız var closeButton = createCloseButton(); closeButton.x = bg.x + modalWidth / 2 - closeButton.width / 2 - 205; closeButton.y = bg.y - modalHeight / 2 + closeButton.height / 2 + 195; closeButton.on('down', function () { game.removeChild(recordsContainer); game.removeChild(closeButton); // Enable menu interaction when modal is closed menuOpen = true; menuContainer.visible = true; }); game.addChild(closeButton); } /**** * End Game & Reset Functions ****/ function endGame() { LK.effects.flashScreen(0xFF0000, 500); character.velocityY = character.jumpStrength; character.update = function () { if (gameOver) { character.velocityY += character.gravity; character.y += character.velocityY; if (character.y > groundY + character.height) { character.y = groundY + character.height; character.velocityY = 0; } } }; game.children.forEach(function (child) { if (child.velocityX) { child.velocityX = 0; } }); game.touchDisabled = true; lastScore = passCounter; records.push({ score: passCounter, attempt: records.length + 1 }); records.sort(function (a, b) { return b.score - a.score; }); if (records.length > 5) { records = records.slice(0, 5); } LK.setTimeout(function () { game.touchDisabled = false; menuOpen = true; menuContainer.visible = true; var startY = groundY + 100; var endY = centerY() - 1270; var animationDuration = 16.5 * 5 / 1.5; var startTime = Date.now(); function animateMenu() { var currentTime = Date.now(); var elapsedTime = currentTime - startTime; var progress = Math.min(elapsedTime / animationDuration, 1); menuContainer.y = startY + (endY - startY) * progress; if (progress < 1) { LK.setTimeout(animateMenu, 16); } } animateMenu(); }, 1700); LK.setTimeout(function () { resetGame(); }, 1750); } function resetGame() { if (gameOverText) { game.removeChild(gameOverText); gameOverText = null; } // Flip'i eski hâline döndür unflipWorld(); var objectsToRemove = []; game.children.forEach(function (child) { if (child instanceof Tree || child instanceof Tube) { objectsToRemove.push(child); } }); objectsToRemove.forEach(function (obj) { game.removeChild(obj); }); game.removeChild(character); character = game.addChild(new Character()); character.x = centerX(); character.y = groundY / 2; // Reset background and bg2 positions background.x = centerX(); bg2.x = centerX() + 2807.2; background.velocityX = -3.6; bg2.velocityX = -3.6; bg2.scale.x = 1; // Ensure bg2 is not flipped horizontally gameStarted = false; gameOver = false; character.preventDeath = false; // Reset preventDeath flag underscoreAsset.preventDeath = false; // Reset preventDeath flag for underscore asset lastSpawner = null; passCounter = 0; underscoreTouchCount = 0; // Reset underscore touch count counterText.setText(passCounter); } /**** * Eliptik hit testi için yardımcı fonksiyon ****/ function checkEllipseHover(button, lx, ly) { var scaleFactorX = 1; var scaleFactorY = 0.53; var offsetY = 40; var dx = lx - button.x; var dy = ly - (button.y + offsetY); var rx = button.width / 2 * scaleFactorX; var ry = button.height / 2 * scaleFactorY; return dx * dx / (rx * rx) + dy * dy / (ry * ry) <= 1; } /**** * Fare hareketinde hover kontrolü ****/ game.move = function (x, y, obj) { if (!menuOpen) { return; } // Modal açıkken hover efekti çalışmasın. var localX = x - menuContainer.x; var localY = y - menuContainer.y; playButton.visible = checkEllipseHover(playButton, localX, localY); volumeButton.visible = checkEllipseHover(volumeButton, localX, localY); creditsButton.visible = checkEllipseHover(creditsButton, localX, localY); recordsButton.visible = checkEllipseHover(recordsButton, localX, localY); }; /**** * Touch Event ****/ game.down = function (x, y, obj) { if (menuOpen) { var localX = x - menuContainer.x; var localY = y - menuContainer.y; if (checkEllipseHover(playButton, localX, localY)) { var _animateMenu = function animateMenu() { var currentTime = Date.now(); var elapsedTime = currentTime - startTime; var progress = Math.min(elapsedTime / animationDuration, 1); menuContainer.y = startY + (endY - startY) * progress; if (progress < 1) { LK.setTimeout(_animateMenu, 1); } else { menuOpen = false; menuContainer.visible = false; gameWait = true; } }; var animationDuration = 16.5 * 5 * 2 / 1.5; var startTime = Date.now(); var startY = menuContainer.y; var endY = centerY() + 100; _animateMenu(); return; } else if (checkEllipseHover(volumeButton, localX, localY)) { showVolume(); } else if (checkEllipseHover(creditsButton, localX, localY)) { showCredits(); } else if (checkEllipseHover(recordsButton, localX, localY)) { showRecords(); } return; } else if (gameOver) { if (!game.touchDisabled) { menuOpen = true; menuContainer.visible = true; resetGame(); } } else { if (gameWait) { gameWait = false; gameStarted = true; var initialTube = new Tube(); game.addChild(initialTube); lastSpawner = initialTube; character.jump(); } else { character.jump(); character.rotation = 0.1; LK.setTimeout(function () { character.rotation = 0; }, 200); } } }; /**** * Game Loop ****/ game.update = function () { game.children.forEach(function (child) { if (child.update) { child.update(); } // Move background and bg2 to the left if (child === background || child === bg2) { if (!gameOver && !menuOpen && gameStarted) { // Only move if game is not over child.x -= 7.2; // Move left by 5.0 units per frame to increase speed } // Reset position if moved off screen if (child.x < -2807.2 / 2) { child.x += 2807.2 * 2; } } }); game.children.sort(function (a, b) { return (a.zIndex || 0) - (b.zIndex || 0); }); };
===================================================================
--- original.js
+++ change.js
@@ -379,9 +379,9 @@
var playButton = LK.getAsset('button_play', {
anchorX: 0.5,
anchorY: 0.5,
x: centerX() - 20,
- y: centerY() + 205
+ y: centerY() + 200
});
playButton.visible = false;
menuContainer.addChild(playButton);
var playLabel = new Text2("PLAY", {