User prompt
Harika, oyunun sorunsuz çalıştığını duymak sevindirici! SS alırken duvarların görünmemesi anlaşılabilir bir durum. Skor tablosunda birinci olmanız da tebrikler! Şimdi, bahsettiğiniz skor tablosuna diğer oyuncuların verilerini yansıtmak için yapay zekaya aşağıdaki gibi bir talimat vermeniz gerekecek: "Skor tablosunda ('SKOR TABLOSU' menüsü), şu anda sadece kendi skorunuz ve 'Oyuncu538' adıyla birinci sıranız gözüküyor. Bu tabloya diğer gerçek oyuncuların skorlarını ve kullanıcı adlarını/isimlerini de ekle. Tablo, en yüksek skordan başlayarak sıralanmalı ve sayfa sayfa geçiş sistemi ile çalışmalı (her sayfada örneğin 10 oyuncu olacak şekilde). Eğer oyuncu ilk 100'de değilse, kendi sırası ve skoru listenin altında ayrı olarak gösterilmeye devam etmeli." Bu talimat, skor tablosunun gerçek oyuncuların verileriyle nasıl doldurulması gerektiğini ve daha önce konuştuğumuz sıralama ve sayfalama özelliklerinin de dahil edilmesini sağlayacaktır. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Her düğmenin algılama sistemi ve butonları ayrı olsun birbirlerine girmesinler ve düğmelerin iç içe girmesi ile ilgili hatalar da var.
User prompt
bir tuşu düzelteceğim derken tüm tuşları bozuyorsun
User prompt
Geri tuşu ile ilgili yapılan tüm hataları düzelt
User prompt
Geri tuşu çalışmasıyla ilgili hatalar var.
User prompt
en yüksek skor ve son yapılan skor hatalarını düzelt ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Oyunu kaybettiğimizde oyun kapanması değil sadece ana menüye dönsün.
User prompt
Oyundaki skor tablosu sadece gerçek oyuncuların skorunu göstersin ve skor tablosu sıfırdan başlasın yani daha önce yapılan hiçbir skor sayılmasın yapılan ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Sen adında, bir de oyuncunun etiketi adında iki kişi var. O ikisi de aynı kişi. Lütfen bunu düzelt.
User prompt
Skor tablosundaki Sahte kişiler olmasın Sadece gerçek oyuncuların skorları gözüksün ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Oyuncunun ismi yazan yazıyı biraz aşağıya çek.
User prompt
Oyuncu isimleri boş yere o kadar uzun olmasın. Mesela Oyuncu 1, Oyuncu 2, Oyuncu 3 diye ilerleyebilir.
User prompt
oyuna ve skor yazılarını tuşlarını aşağı çek ve oyuncu ismimizi onların üstüne koy
User prompt
kullanıcı ismimizi gözükür bir renk yap ya da arkasına bir panel koy böylece rengi gözükür
User prompt
oyuna girdiğimizde skor ve oyuna tuşunun üstünde kullanıcı ismimiz olsun ve gerçek kişiler ile tabloda yarışalım ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Oyundaki hiçbir şeyi silme veya bozma, sadece hataları düzelt.
User prompt
skor kısmından çıkmak için eklediğin geri tuşu çalışmıyor düzelt
User prompt
Skor tablosu çok sıkışık ve arka planı olmadığı için çok kötü duruyor. Arka plan ekle ve daha düzgün hale getir.
User prompt
Please fix the bug: 'Timeout.tick error: Invalid value. Only literals or 1-level deep objects/arrays containing literals are allowed.' in or related to this line: 'storage.globalLeaderboard = [{' Line Number: 401 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Başka kulağıncıların da skorların gözükmesi oyunu bozdu bazı hataları düzelt ve tekrar ekle. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Skora Tıklayınca Sadece Bizim Skorlar Değil Başka Kullanıcılarında Yaptığı Skorlar Gözüksün. Böylece Rekabet Artacak Ve Oyun Daha Çok Oynanacak. ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Şimdi tuşların algılama sistemi tamam oldu da bir iki kere tıklayınca anca açılıyorlar böyle hataları düzelt
User prompt
Please fix the bug: 'TypeError: storage.set is not a function' in or related to this line: 'storage.set('lastScore', currentScore);' Line Number: 507 ↪💡 Consider importing and using the following plugins: @upit/storage.v1
User prompt
Oyuna ve skor tuşları çalışmıyor. Ya kaldır ya düzelt.
User prompt
Oyuna ve sport düşlerinin algılama sistemi yok. Onları da ekle. ↪💡 Consider importing and using the following plugins: @upit/storage.v1, @upit/tween.v1
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Bird = Container.expand(function () { var self = Container.call(this); var birdGraphics = self.attachAsset('bird', { anchorX: 0.5, anchorY: 0.5 }); self.velocity = 0; self.gravity = 0.8; self.jumpStrength = -12; self.flap = function () { self.velocity = self.jumpStrength; LK.getSound('flap').play(); }; self.update = function () { if (!gameStarted) { // Don't apply physics before game starts - keep bird completely still self.velocity = 0; self.y = 1366; // Keep bird at starting position birdGraphics.rotation = 0; // Keep bird level return; } self.velocity += self.gravity; self.y += self.velocity; // Rotate bird based on velocity birdGraphics.rotation = Math.max(-0.5, Math.min(1.5, self.velocity * 0.1)); // Limit bird movement to screen bounds if (self.y < 30) { self.y = 30; } }; return self; }); var Pipe = Container.expand(function (gapCenterY) { var self = Container.call(this); self.gapSize = 600; self.speed = -3; self.passed = false; self.gapCenterY = gapCenterY; // Create top pipe var topPipe = self.attachAsset('pipe', { anchorX: 0.5, anchorY: 1 }); topPipe.y = gapCenterY - self.gapSize / 2; topPipe.height = gapCenterY - self.gapSize / 2; // Create bottom pipe var bottomPipe = self.attachAsset('pipe', { anchorX: 0.5, anchorY: 0 }); bottomPipe.y = gapCenterY + self.gapSize / 2; bottomPipe.height = 2732 - 150 - (gapCenterY + self.gapSize / 2); self.update = function () { if (!gameStarted) { // Don't move pipes before game starts return; } self.x += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ // Game variables var bird; var pipes = []; var ground; var topBarrier; var bottomBarrier; var gameStarted = false; var gameOver = false; var showMainMenu = true; var showLeaderboard = false; var pipeSpacing = 600; // Consistent spacing between all pipes - balanced distance // Create score display var scoreTxt = new Text2('SKOR: 0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); scoreTxt.stroke = 0x000000; scoreTxt.strokeThickness = 4; LK.gui.top.addChild(scoreTxt); scoreTxt.y = 100; // Create main menu elements var mainMenuTitle = new Text2('FLAPPY BIRD', { size: 100, fill: 0xFFD700 }); mainMenuTitle.anchor.set(0.5, 0.5); mainMenuTitle.stroke = 0x000000; mainMenuTitle.strokeThickness = 5; LK.gui.center.addChild(mainMenuTitle); mainMenuTitle.y = -200; // Create play button var playButton = LK.getAsset('ground', { anchorX: 0.5, anchorY: 0.5, width: 300, height: 80, alpha: 0.9 }); playButton.tint = 0x32CD32; LK.gui.center.addChild(playButton); playButton.y = 0; var playButtonText = new Text2('OYNA', { size: 50, fill: 0xFFFFFF }); playButtonText.anchor.set(0.5, 0.5); playButtonText.stroke = 0x000000; playButtonText.strokeThickness = 3; LK.gui.center.addChild(playButtonText); playButtonText.y = 0; // Create score button var scoreButton = LK.getAsset('ground', { anchorX: 0.5, anchorY: 0.5, width: 300, height: 80, alpha: 0.9 }); scoreButton.tint = 0x4169E1; LK.gui.center.addChild(scoreButton); scoreButton.y = 100; var scoreButtonText = new Text2('SKOR', { size: 50, fill: 0xFFFFFF }); scoreButtonText.anchor.set(0.5, 0.5); scoreButtonText.stroke = 0x000000; scoreButtonText.strokeThickness = 3; LK.gui.center.addChild(scoreButtonText); scoreButtonText.y = 100; // Create instruction text var instructionTxt = new Text2('TIKLA VE OYNA!', { size: 60, fill: 0xFFFFFF }); instructionTxt.anchor.set(0.5, 0.5); instructionTxt.stroke = 0x000000; instructionTxt.strokeThickness = 3; instructionTxt.visible = false; // Add background shape for instruction text var instructionBg = LK.getAsset('ground', { anchorX: 0.5, anchorY: 0.5, width: 400, height: 100, alpha: 0.8 }); instructionBg.tint = 0x000000; instructionBg.visible = false; LK.gui.center.addChild(instructionBg); LK.gui.center.addChild(instructionTxt); // Create leaderboard elements var leaderboardTitle = new Text2('SKOR TABLOSU', { size: 80, fill: 0xFFD700 }); leaderboardTitle.anchor.set(0.5, 0.5); leaderboardTitle.stroke = 0x000000; leaderboardTitle.strokeThickness = 4; leaderboardTitle.visible = false; LK.gui.center.addChild(leaderboardTitle); leaderboardTitle.y = -250; var highScoreText = new Text2('EN YÜKSEK SKOR: 0', { size: 50, fill: 0xFFFFFF }); highScoreText.anchor.set(0.5, 0.5); highScoreText.stroke = 0x000000; highScoreText.strokeThickness = 3; highScoreText.visible = false; LK.gui.center.addChild(highScoreText); highScoreText.y = -150; var currentScoreText = new Text2('SON SKOR: 0', { size: 50, fill: 0xFFFFFF }); currentScoreText.anchor.set(0.5, 0.5); currentScoreText.stroke = 0x000000; currentScoreText.strokeThickness = 3; currentScoreText.visible = false; LK.gui.center.addChild(currentScoreText); currentScoreText.y = -50; // Create back button for leaderboard var backButton = LK.getAsset('ground', { anchorX: 0.5, anchorY: 0.5, width: 300, height: 80, alpha: 0.9 }); backButton.tint = 0xFF4500; backButton.visible = false; LK.gui.center.addChild(backButton); backButton.y = 100; var backButtonText = new Text2('GERİ', { size: 50, fill: 0xFFFFFF }); backButtonText.anchor.set(0.5, 0.5); backButtonText.stroke = 0x000000; backButtonText.strokeThickness = 3; backButtonText.visible = false; LK.gui.center.addChild(backButtonText); backButtonText.y = 100; // Create bird bird = game.addChild(new Bird()); bird.x = 400; bird.y = 1366; // Create invisible barrier blocks to constrain bird before game starts var topBarrier = game.addChild(LK.getAsset('barrier', { anchorX: 0.5, anchorY: 1 })); topBarrier.x = 400; topBarrier.y = 1316; // 50 pixels above bird topBarrier.alpha = 0; // Make invisible var bottomBarrier = game.addChild(LK.getAsset('barrier', { anchorX: 0.5, anchorY: 0 })); bottomBarrier.x = 400; bottomBarrier.y = 1416; // 50 pixels below bird bottomBarrier.alpha = 0; // Make invisible // Create ground ground = game.addChild(LK.getAsset('ground', { anchorX: 0, anchorY: 1 })); ground.x = 0; ground.y = 2732; // Create pipe function function createPipe() { var minGapY = 500; var maxGapY = 2032; // 2732 - 150 - 600 (adjusted for larger gap) var gapCenterY = minGapY + Math.random() * (maxGapY - minGapY); var pipe = new Pipe(gapCenterY); // Calculate position based on last pipe position + consistent spacing if (pipes.length === 0) { pipe.x = 2048 + 200; // First pipe position } else { pipe.x = pipes[pipes.length - 1].x + pipeSpacing; // Consistent spacing from last pipe } pipes.push(pipe); game.addChild(pipe); } // Reset game function function resetGame() { // Reset bird bird.x = 400; bird.y = 1366; bird.velocity = 0; // Clear pipes for (var i = pipes.length - 1; i >= 0; i--) { pipes[i].destroy(); } pipes = []; // Reset variables gameStarted = false; gameOver = false; showMainMenu = true; showLeaderboard = false; LK.setScore(0); scoreTxt.setText('SKOR: 0'); // Show main menu mainMenuTitle.visible = true; playButton.visible = true; playButtonText.visible = true; scoreButton.visible = true; scoreButtonText.visible = true; // Hide instruction instructionTxt.visible = false; instructionBg.visible = false; // Hide leaderboard elements leaderboardTitle.visible = false; highScoreText.visible = false; currentScoreText.visible = false; backButton.visible = false; backButtonText.visible = false; // Clear existing barriers if they exist if (topBarrier) { topBarrier.destroy(); topBarrier = null; } if (bottomBarrier) { bottomBarrier.destroy(); bottomBarrier = null; } // Recreate invisible barriers topBarrier = game.addChild(LK.getAsset('barrier', { anchorX: 0.5, anchorY: 1 })); topBarrier.x = 400; topBarrier.y = 1316; // 50 pixels above bird topBarrier.alpha = 0; // Make invisible bottomBarrier = game.addChild(LK.getAsset('barrier', { anchorX: 0.5, anchorY: 0 })); bottomBarrier.x = 400; bottomBarrier.y = 1416; // 50 pixels below bird bottomBarrier.alpha = 0; // Make invisible // Create initial pipes createPipe(); createPipe(); } // Function to start game from main menu function startGameFromMenu() { showMainMenu = false; // Hide main menu elements mainMenuTitle.visible = false; playButton.visible = false; playButtonText.visible = false; scoreButton.visible = false; scoreButtonText.visible = false; // Show instruction instructionTxt.visible = true; instructionBg.visible = true; } // Create global leaderboard display elements var globalLeaderboardText = new Text2('GLOBAL LIDERLER:', { size: 50, fill: 0xFFD700 }); globalLeaderboardText.anchor.set(0.5, 0.5); globalLeaderboardText.stroke = 0x000000; globalLeaderboardText.strokeThickness = 3; globalLeaderboardText.visible = false; LK.gui.center.addChild(globalLeaderboardText); globalLeaderboardText.y = 50; var globalScoresList = []; for (var i = 0; i < 5; i++) { var scoreText = new Text2('', { size: 40, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0.5); scoreText.stroke = 0x000000; scoreText.strokeThickness = 2; scoreText.visible = false; LK.gui.center.addChild(scoreText); scoreText.y = 120 + i * 50; globalScoresList.push(scoreText); } // Function to show leaderboard function showLeaderboardScreen() { showMainMenu = false; showLeaderboard = true; // Hide main menu elements mainMenuTitle.visible = false; playButton.visible = false; playButtonText.visible = false; scoreButton.visible = false; scoreButtonText.visible = false; // Show leaderboard elements leaderboardTitle.visible = true; highScoreText.visible = true; currentScoreText.visible = true; backButton.visible = true; backButtonText.visible = true; globalLeaderboardText.visible = true; // Update score displays var highScore = storage.highScore || 0; var lastScore = storage.lastScore || 0; highScoreText.setText('EN YÜKSEK SKOR: ' + highScore); currentScoreText.setText('SON SKOR: ' + lastScore); // Get global leaderboard from storage var globalScores = storage.globalLeaderboard || []; // Add current player's high score if it doesn't exist var playerExists = false; for (var i = 0; i < globalScores.length; i++) { if (globalScores[i].player === 'Sen') { globalScores[i].score = Math.max(globalScores[i].score, highScore); playerExists = true; break; } } if (!playerExists && highScore > 0) { globalScores.push({ player: 'Sen', score: highScore }); } // Sort scores in descending order globalScores.sort(function (a, b) { return b.score - a.score; }); // Keep only top 10 scores if (globalScores.length > 10) { globalScores = globalScores.slice(0, 10); } // Save updated leaderboard storage.globalLeaderboard = globalScores; // Display global scores for (var i = 0; i < globalScoresList.length; i++) { if (i < globalScores.length) { var displayText = i + 1 + '. ' + globalScores[i].player + ': ' + globalScores[i].score; globalScoresList[i].setText(displayText); globalScoresList[i].visible = true; } else { globalScoresList[i].visible = false; } } } // Function to hide leaderboard and return to main menu function hideLeaderboard() { showLeaderboard = false; showMainMenu = true; // Hide leaderboard elements leaderboardTitle.visible = false; highScoreText.visible = false; currentScoreText.visible = false; backButton.visible = false; backButtonText.visible = false; globalLeaderboardText.visible = false; // Hide global scores list for (var i = 0; i < globalScoresList.length; i++) { globalScoresList[i].visible = false; } // Show main menu elements mainMenuTitle.visible = true; playButton.visible = true; playButtonText.visible = true; scoreButton.visible = true; scoreButtonText.visible = true; } // Initialize competitive leaderboard with sample scores if (!storage.globalLeaderboard) { storage.globalLeaderboard = [{ player: 'ProPlayer', score: 50 }, { player: 'FlappyMaster', score: 45 }, { player: 'BirdExpert', score: 40 }, { player: 'SkyWalker', score: 35 }, { player: 'FeatherKing', score: 30 }, { player: 'WingCommander', score: 25 }, { player: 'FlightAce', score: 20 }, { player: 'AirForce', score: 15 }, { player: 'CloudRider', score: 10 }, { player: 'Beginner', score: 5 }]; } // Initialize game createPipe(); createPipe(); // Touch/click handler game.down = function (x, y, obj) { if (gameOver) { resetGame(); return; } if (showMainMenu) { // Simple button detection using screen coordinates // Play button is at screen center Y offset 0, Score button at Y offset 100 var screenCenterX = 1024; // 2048/2 var screenCenterY = 1366; // 2732/2 // Check play button (OYNA) - centered at screen center with larger click area var playButtonX = screenCenterX; var playButtonY = screenCenterY; if (x >= playButtonX - 200 && x <= playButtonX + 200 && y >= playButtonY - 80 && y <= playButtonY + 80) { // Add visual feedback with tween tween(playButton, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100, onFinish: function onFinish() { tween(playButton, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100 }); } }); // Add small delay to prevent double clicks LK.setTimeout(function () { startGameFromMenu(); }, 150); return; } // Check score button (SKOR) - 100 pixels below play button with larger click area var scoreButtonX = screenCenterX; var scoreButtonY = screenCenterY + 100; if (x >= scoreButtonX - 200 && x <= scoreButtonX + 200 && y >= scoreButtonY - 80 && y <= scoreButtonY + 80) { // Add visual feedback with tween tween(scoreButton, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100, onFinish: function onFinish() { tween(scoreButton, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100 }); } }); // Add small delay to prevent double clicks LK.setTimeout(function () { showLeaderboardScreen(); }, 150); return; } return; } if (showLeaderboard) { // Simple button detection using screen coordinates var screenCenterX = 1024; // 2048/2 var screenCenterY = 1366; // 2732/2 // Check back button (GERİ) - 100 pixels below screen center with larger click area var backButtonX = screenCenterX; var backButtonY = screenCenterY + 100; if (x >= backButtonX - 200 && x <= backButtonX + 200 && y >= backButtonY - 80 && y <= backButtonY + 80) { // Add visual feedback with tween tween(backButton, { scaleX: 1.1, scaleY: 1.1 }, { duration: 100, onFinish: function onFinish() { tween(backButton, { scaleX: 1.0, scaleY: 1.0 }, { duration: 100 }); } }); // Add small delay to prevent double clicks LK.setTimeout(function () { hideLeaderboard(); }, 150); return; } return; } if (!gameStarted) { gameStarted = true; instructionTxt.visible = false; instructionBg.visible = false; // Remove invisible barriers when game starts if (topBarrier) { topBarrier.destroy(); topBarrier = null; } if (bottomBarrier) { bottomBarrier.destroy(); bottomBarrier = null; } } bird.flap(); }; // Main game loop game.update = function () { if (gameOver || showMainMenu || showLeaderboard) return; // Only run game logic if game has started if (gameStarted) { // Check ground collision if (bird.y + 20 >= 2732 - 150) { gameOver = true; // Save score before showing game over var currentScore = LK.getScore(); storage.lastScore = currentScore; if (currentScore > (storage.highScore || 0)) { storage.highScore = currentScore; } LK.showGameOver(); return; } // Check ceiling collision if (bird.y - 20 <= 0) { gameOver = true; // Save score before showing game over var currentScore = LK.getScore(); storage.lastScore = currentScore; if (currentScore > (storage.highScore || 0)) { storage.highScore = currentScore; } LK.showGameOver(); return; } // Check pipe collisions and scoring - only check pipes that are near the bird for (var i = 0; i < pipes.length; i++) { var pipe = pipes[i]; // Only check pipes that are within reasonable distance of the bird if (Math.abs(pipe.x - bird.x) < 200) { // Check if bird is within pipe horizontally if (bird.x + 30 > pipe.x - 50 && bird.x - 30 < pipe.x + 50) { // Check collision with top pipe if (bird.y - 20 < pipe.gapCenterY - pipe.gapSize / 2) { gameOver = true; // Save score before showing game over var currentScore = LK.getScore(); storage.lastScore = currentScore; if (currentScore > (storage.highScore || 0)) { storage.highScore = currentScore; } LK.showGameOver(); return; } // Check collision with bottom pipe if (bird.y + 20 > pipe.gapCenterY + pipe.gapSize / 2) { gameOver = true; // Save score before showing game over var currentScore = LK.getScore(); storage.lastScore = currentScore; if (currentScore > (storage.highScore || 0)) { storage.highScore = currentScore; } LK.showGameOver(); return; } } } // Check scoring - only for pipes that haven't been passed yet if (!pipe.passed && pipe.x + 50 < bird.x) { pipe.passed = true; LK.setScore(LK.getScore() + 1); scoreTxt.setText('SKOR: ' + LK.getScore()); LK.getSound('score').play(); } } // Create new pipes - maintain consistent spacing if (pipes.length === 0 || pipes.length > 0 && pipes[pipes.length - 1].x <= 2048 + 200 - pipeSpacing) { createPipe(); } // Remove off-screen pipes - only check every 10 frames to reduce lag if (LK.ticks % 10 === 0) { for (var j = pipes.length - 1; j >= 0; j--) { if (pipes[j].x < -150) { pipes[j].destroy(); pipes.splice(j, 1); } } } } };
===================================================================
--- original.js
+++ change.js
@@ -338,8 +338,33 @@
// Show instruction
instructionTxt.visible = true;
instructionBg.visible = true;
}
+// Create global leaderboard display elements
+var globalLeaderboardText = new Text2('GLOBAL LIDERLER:', {
+ size: 50,
+ fill: 0xFFD700
+});
+globalLeaderboardText.anchor.set(0.5, 0.5);
+globalLeaderboardText.stroke = 0x000000;
+globalLeaderboardText.strokeThickness = 3;
+globalLeaderboardText.visible = false;
+LK.gui.center.addChild(globalLeaderboardText);
+globalLeaderboardText.y = 50;
+var globalScoresList = [];
+for (var i = 0; i < 5; i++) {
+ var scoreText = new Text2('', {
+ size: 40,
+ fill: 0xFFFFFF
+ });
+ scoreText.anchor.set(0.5, 0.5);
+ scoreText.stroke = 0x000000;
+ scoreText.strokeThickness = 2;
+ scoreText.visible = false;
+ LK.gui.center.addChild(scoreText);
+ scoreText.y = 120 + i * 50;
+ globalScoresList.push(scoreText);
+}
// Function to show leaderboard
function showLeaderboardScreen() {
showMainMenu = false;
showLeaderboard = true;
@@ -354,13 +379,51 @@
highScoreText.visible = true;
currentScoreText.visible = true;
backButton.visible = true;
backButtonText.visible = true;
+ globalLeaderboardText.visible = true;
// Update score displays
var highScore = storage.highScore || 0;
var lastScore = storage.lastScore || 0;
highScoreText.setText('EN YÜKSEK SKOR: ' + highScore);
currentScoreText.setText('SON SKOR: ' + lastScore);
+ // Get global leaderboard from storage
+ var globalScores = storage.globalLeaderboard || [];
+ // Add current player's high score if it doesn't exist
+ var playerExists = false;
+ for (var i = 0; i < globalScores.length; i++) {
+ if (globalScores[i].player === 'Sen') {
+ globalScores[i].score = Math.max(globalScores[i].score, highScore);
+ playerExists = true;
+ break;
+ }
+ }
+ if (!playerExists && highScore > 0) {
+ globalScores.push({
+ player: 'Sen',
+ score: highScore
+ });
+ }
+ // Sort scores in descending order
+ globalScores.sort(function (a, b) {
+ return b.score - a.score;
+ });
+ // Keep only top 10 scores
+ if (globalScores.length > 10) {
+ globalScores = globalScores.slice(0, 10);
+ }
+ // Save updated leaderboard
+ storage.globalLeaderboard = globalScores;
+ // Display global scores
+ for (var i = 0; i < globalScoresList.length; i++) {
+ if (i < globalScores.length) {
+ var displayText = i + 1 + '. ' + globalScores[i].player + ': ' + globalScores[i].score;
+ globalScoresList[i].setText(displayText);
+ globalScoresList[i].visible = true;
+ } else {
+ globalScoresList[i].visible = false;
+ }
+ }
}
// Function to hide leaderboard and return to main menu
function hideLeaderboard() {
showLeaderboard = false;
@@ -370,15 +433,54 @@
highScoreText.visible = false;
currentScoreText.visible = false;
backButton.visible = false;
backButtonText.visible = false;
+ globalLeaderboardText.visible = false;
+ // Hide global scores list
+ for (var i = 0; i < globalScoresList.length; i++) {
+ globalScoresList[i].visible = false;
+ }
// Show main menu elements
mainMenuTitle.visible = true;
playButton.visible = true;
playButtonText.visible = true;
scoreButton.visible = true;
scoreButtonText.visible = true;
}
+// Initialize competitive leaderboard with sample scores
+if (!storage.globalLeaderboard) {
+ storage.globalLeaderboard = [{
+ player: 'ProPlayer',
+ score: 50
+ }, {
+ player: 'FlappyMaster',
+ score: 45
+ }, {
+ player: 'BirdExpert',
+ score: 40
+ }, {
+ player: 'SkyWalker',
+ score: 35
+ }, {
+ player: 'FeatherKing',
+ score: 30
+ }, {
+ player: 'WingCommander',
+ score: 25
+ }, {
+ player: 'FlightAce',
+ score: 20
+ }, {
+ player: 'AirForce',
+ score: 15
+ }, {
+ player: 'CloudRider',
+ score: 10
+ }, {
+ player: 'Beginner',
+ score: 5
+ }];
+}
// Initialize game
createPipe();
createPipe();
// Touch/click handler