{"id":1712,"date":"2021-11-21T15:14:44","date_gmt":"2021-11-21T15:14:44","guid":{"rendered":"https:\/\/senorwok.com\/index.php\/contact\/"},"modified":"2024-10-13T17:31:23","modified_gmt":"2024-10-13T17:31:23","slug":"contact","status":"publish","type":"page","link":"https:\/\/senorwok.com\/index.php\/contact\/","title":{"rendered":"Juego"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1712\" class=\"elementor elementor-1712\">\n\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-43275b4 e-flex e-con-boxed e-con e-parent\" data-id=\"43275b4\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;boxed&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1f6ccbc elementor-widget elementor-widget-spacer\" data-id=\"1f6ccbc\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.18.0 - 20-12-2023 *\/\n.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}<\/style>\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-74a16bb elementor-widget elementor-widget-html\" data-id=\"74a16bb\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <title>Juego de la Motocicleta Mejorado con Firebase<\/title>\r\n    <style>\r\n        \/* Estilos generales *\/\r\n        body {\r\n            margin: 0;\r\n            overflow: hidden;\r\n            background-color: #a3d5f7; \/* Color del cielo *\/\r\n            font-family: Arial, sans-serif;\r\n        }\r\n        #gameContainer {\r\n            position: relative;\r\n            width: 100%;\r\n            max-width: 800px;\r\n            height: 300px;\r\n            margin: 50px auto;\r\n            background-color: #a3d5f7;\r\n            overflow: hidden;\r\n            border: 1px solid #ccc;\r\n            z-index: 1;\r\n        }\r\n        #game {\r\n            position: relative;\r\n            width: 100%;\r\n            height: 100%;\r\n            overflow: hidden;\r\n        }\r\n        \/* Texto de fondo \"SE\u00d1OR WOK\" *\/\r\n        #backgroundText {\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 100%;\r\n            transform: translate(-50%, -50%);\r\n            font-size: 100px;\r\n            font-weight: bold;\r\n            color: rgba(255, 255, 255, 0.1);\r\n            z-index: 0;\r\n            pointer-events: none;\r\n            white-space: nowrap;\r\n            animation: moveBackgroundText 20s linear infinite;\r\n        }\r\n        @keyframes moveBackgroundText {\r\n            from {\r\n                left: 100%;\r\n            }\r\n            to {\r\n                left: -100%;\r\n            }\r\n        }\r\n        \/* Estilo de la motocicleta *\/\r\n        #motocicleta {\r\n            position: absolute;\r\n            bottom: 50px; \/* Altura inicial sobre el suelo *\/\r\n            left: 10%;\r\n            width: 80px;\r\n            height: 40px;\r\n            background-color: #000; \/* Color negro para la moto *\/\r\n            border-radius: 20px 20px 0 0; \/* Redondear la parte superior *\/\r\n            z-index: 2;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            color: #fff;\r\n            font-size: 20px;\r\n            font-weight: bold;\r\n        }\r\n        \/* Ruedas de la motocicleta *\/\r\n        #motocicleta::before,\r\n        #motocicleta::after {\r\n            content: '';\r\n            position: absolute;\r\n            bottom: -15px; \/* Posici\u00f3n de las ruedas *\/\r\n            width: 20px;\r\n            height: 20px;\r\n            background-color: #333;\r\n            border-radius: 50%;\r\n            animation: girarRueda 0.5s linear infinite;\r\n        }\r\n        #motocicleta::before {\r\n            left: 10px; \/* Rueda delantera *\/\r\n        }\r\n        #motocicleta::after {\r\n            right: 10px; \/* Rueda trasera *\/\r\n        }\r\n        @keyframes girarRueda {\r\n            from {\r\n                transform: rotate(0deg);\r\n            }\r\n            to {\r\n                transform: rotate(360deg);\r\n            }\r\n        }\r\n        \/* Obst\u00e1culos generales *\/\r\n        .obstaculo {\r\n            position: absolute;\r\n            bottom: 50px;\r\n            width: 40px;\r\n            z-index: 2;\r\n        }\r\n        \/* Monta\u00f1a *\/\r\n        .monta\u00f1a {\r\n            height: 50px; \/* Reducido de 60px *\/\r\n            background-color: #8B4513; \/* Color marr\u00f3n *\/\r\n            clip-path: polygon(50% 0%, 0% 100%, 100% 100%); \/* Tri\u00e1ngulo *\/\r\n        }\r\n        \/* \u00c1rbol *\/\r\n        .arbol {\r\n            height: 50px; \/* Reducido de 60px *\/\r\n            background-color: #228B22; \/* Color verde *\/\r\n            clip-path: polygon(50% 0%, 0% 100%, 100% 100%); \/* Tri\u00e1ngulo *\/\r\n        }\r\n        \/* Suelo *\/\r\n        #suelo {\r\n            position: absolute;\r\n            bottom: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 50px;\r\n            background-color: #654321;\r\n            z-index: 1;\r\n        }\r\n        \/* Puntaje y tabla de l\u00edderes *\/\r\n        #score {\r\n            position: absolute;\r\n            top: 10px;\r\n            left: 10px;\r\n            font-size: 18px;\r\n            color: #333;\r\n            z-index: 3;\r\n        }\r\n        #leaderboard {\r\n            position: absolute;\r\n            top: 10px;\r\n            right: 10px;\r\n            font-size: 16px;\r\n            color: #333;\r\n            text-align: right;\r\n            z-index: 3;\r\n        }\r\n        \/* Formulario de ingreso de usuario *\/\r\n        #usernameInput {\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background-color: rgba(0, 0, 0, 0.5);\r\n            display: flex;\r\n            justify-content: center;\r\n            align-items: center;\r\n            z-index: 10;\r\n        }\r\n        #usernameInputContent {\r\n            background-color: #fff;\r\n            padding: 20px;\r\n            border: 1px solid #ccc;\r\n            text-align: center;\r\n            width: 90%;\r\n            max-width: 400px;\r\n        }\r\n        #usernameInput input {\r\n            padding: 10px;\r\n            font-size: 16px;\r\n            width: 80%;\r\n            max-width: 300px;\r\n        }\r\n        #usernameInput button {\r\n            padding: 10px 20px;\r\n            font-size: 16px;\r\n            margin-top: 10px;\r\n        }\r\n        \/* Botones t\u00e1ctiles *\/\r\n        #touchControls {\r\n            position: fixed;\r\n            bottom: 10px;\r\n            left: 50%;\r\n            transform: translateX(-50%);\r\n            z-index: 5;\r\n        }\r\n        #touchControls button {\r\n            padding: 20px 40px;\r\n            font-size: 20px;\r\n            background-color: #555;\r\n            color: #fff;\r\n            border: none;\r\n            border-radius: 5px;\r\n            opacity: 0.7;\r\n        }\r\n        @media (min-width: 600px) {\r\n            #touchControls {\r\n                display: none;\r\n            }\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <!-- Formulario de ingreso de usuario -->\r\n    <div id=\"usernameInput\">\r\n        <div id=\"usernameInputContent\">\r\n            <h2>Ingresa tu nombre<\/h2>\r\n            <input type=\"text\" id=\"username\" placeholder=\"Nombre de usuario\">\r\n            <br>\r\n            <button id=\"startButton\">Iniciar Juego<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Contenedor del juego -->\r\n    <div id=\"gameContainer\">\r\n        <div id=\"game\">\r\n            <!-- Texto en el fondo -->\r\n            <div id=\"backgroundText\">SE\u00d1OR WOK<\/div>\r\n            <!-- Motocicleta -->\r\n            <div id=\"motocicleta\">S W<\/div>\r\n            <!-- Suelo -->\r\n            <div id=\"suelo\"><\/div>\r\n            <!-- Puntaje y tabla de l\u00edderes -->\r\n            <div id=\"score\">Puntaje: 0<\/div>\r\n            <div id=\"leaderboard\">\r\n                <strong>Top 5 Puntajes:<\/strong><br>\r\n                <ol id=\"leaderboardList\"><\/ol>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Controles t\u00e1ctiles -->\r\n    <div id=\"touchControls\">\r\n        <button id=\"jumpButton\">Saltar<\/button>\r\n    <\/div>\r\n\r\n    <!-- Incluir el SDK de Firebase -->\r\n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.22.2\/firebase-app-compat.js\"><\/script>\r\n    <script src=\"https:\/\/www.gstatic.com\/firebasejs\/9.22.2\/firebase-database-compat.js\"><\/script>\r\n\r\n    <!-- Agregar la configuraci\u00f3n de Firebase -->\r\n    <script>\r\n      \/\/ Reemplaza estos valores con tu configuraci\u00f3n de Firebase\r\n     const firebaseConfig = {\r\n  apiKey: \"AIzaSyA6PzKLBw9pPrhvbM0aDvqKyk3YzhJMAhc\",\r\n  authDomain: \"juegomotocicletapuntajes.firebaseapp.com\",\r\n  projectId: \"juegomotocicletapuntajes\",\r\n  storageBucket: \"juegomotocicletapuntajes.appspot.com\",\r\n  messagingSenderId: \"787668323632\",\r\n  appId: \"1:787668323632:web:2afb95273c492301e34cf5\"\r\n};\r\n\r\n\r\n      try {\r\n        \/\/ Inicializar Firebase\r\n        firebase.initializeApp(firebaseConfig);\r\n        console.log(\"Firebase inicializado correctamente.\");\r\n      } catch (error) {\r\n        console.error(\"Error al inicializar Firebase:\", error);\r\n      }\r\n    <\/script>\r\n\r\n    <!-- C\u00f3digo JavaScript del juego -->\r\n    <script>\r\n        const moto = document.getElementById(\"motocicleta\");\r\n        const game = document.getElementById(\"game\");\r\n        const scoreDisplay = document.getElementById(\"score\");\r\n        const leaderboardList = document.getElementById(\"leaderboardList\");\r\n        const usernameInputDiv = document.getElementById(\"usernameInput\");\r\n        const usernameInput = document.getElementById(\"username\");\r\n        const startButton = document.getElementById(\"startButton\");\r\n        const jumpButton = document.getElementById(\"jumpButton\");\r\n\r\n        let isJumping = false;\r\n        let score = 0;\r\n        let scoreInterval;\r\n        let obstacles = [];\r\n        let obstacleTimerIds = [];\r\n        let username = '';\r\n        let isGameOver = false;\r\n\r\n        let audioCtx;\r\n\r\n        \/\/ Variables para el nivel de dificultad\r\n        let obstacleSpeed = 3; \/\/ Velocidad inicial de los obst\u00e1culos\r\n        let obstacleFrequency = 3000; \/\/ Frecuencia inicial de aparici\u00f3n de obst\u00e1culos (ms)\r\n        let difficultyLevel = 1; \/\/ Nivel de dificultad inicial\r\n\r\n        \/\/ M\u00fasica de fondo (opcional)\r\n        let backgroundMusic;\r\n\r\n        \/\/ Ocultar el contenedor del juego hasta que se inicie\r\n        document.getElementById(\"gameContainer\").style.display = 'none';\r\n\r\n        \/\/ Iniciar el juego al hacer clic en el bot\u00f3n\r\n        startButton.addEventListener('click', function() {\r\n            username = usernameInput.value.trim();\r\n            if (username === '') {\r\n                alert('Por favor, ingresa tu nombre.');\r\n                return;\r\n            }\r\n            usernameInputDiv.style.display = 'none';\r\n            document.getElementById(\"gameContainer\").style.display = 'block';\r\n            startGame();\r\n        });\r\n\r\n        function startGame() {\r\n            isGameOver = false;\r\n            score = 0;\r\n            scoreDisplay.textContent = \"Puntaje: \" + score;\r\n            isJumping = false;\r\n            moto.style.bottom = \"50px\";\r\n            obstacles = [];\r\n            obstacleTimerIds = [];\r\n\r\n            \/\/ Restablecer los par\u00e1metros de dificultad\r\n            obstacleSpeed = 3;\r\n            obstacleFrequency = 3000;\r\n            difficultyLevel = 1;\r\n\r\n            \/\/ Crear el AudioContext aqu\u00ed, despu\u00e9s de la interacci\u00f3n del usuario\r\n            audioCtx = new (window.AudioContext || window.webkitAudioContext)();\r\n\r\n            \/\/ Iniciar m\u00fasica de fondo si tienes un archivo de audio\r\n            startBackgroundMusic();\r\n\r\n            document.addEventListener(\"keydown\", control);\r\n            game.addEventListener(\"touchstart\", touchControl);\r\n            jumpButton.addEventListener(\"touchstart\", touchControl);\r\n\r\n            generateObstacle();\r\n            scoreInterval = setInterval(function() {\r\n                score++;\r\n                scoreDisplay.textContent = \"Puntaje: \" + score;\r\n\r\n                \/\/ Verificar si es necesario aumentar la dificultad\r\n                if (score % 500 === 0) {\r\n                    increaseDifficulty();\r\n                }\r\n            }, 100);\r\n        }\r\n\r\n        function control(e) {\r\n            if (e.keyCode === 32 || e.keyCode === 38) { \/\/ Barra espaciadora o flecha arriba\r\n                if (!isJumping) {\r\n                    isJumping = true;\r\n                    jump();\r\n                }\r\n            }\r\n        }\r\n\r\n        function touchControl(e) {\r\n            e.preventDefault();\r\n            if (!isJumping) {\r\n                isJumping = true;\r\n                jump();\r\n            }\r\n        }\r\n\r\n        function jump() {\r\n            playJumpSound();\r\n\r\n            let position = parseInt(moto.style.bottom) || 50;\r\n            let velocity = 30; \/\/ Aumentar la velocidad inicial de salto\r\n            const gravity = 1.2;   \/\/ Gravedad\r\n\r\n            let timerId = setInterval(function() {\r\n                \/\/ Actualizar posici\u00f3n y velocidad\r\n                position += velocity;\r\n                velocity -= gravity;\r\n\r\n                \/\/ Evitar que caiga por debajo del suelo\r\n                if (position <= 50) {\r\n                    position = 50;\r\n                    clearInterval(timerId);\r\n                    isJumping = false;\r\n                }\r\n\r\n                moto.style.bottom = position + \"px\";\r\n            }, 20);\r\n        }\r\n\r\n        function generateObstacle() {\r\n            if (isGameOver) return;\r\n            let obstaclePosition = game.offsetWidth;\r\n            const obstacle = document.createElement(\"div\");\r\n            obstacle.classList.add(\"obstaculo\");\r\n\r\n            const obstacleType = Math.random() < 0.5 ? 'monta\u00f1a' : 'arbol';\r\n            obstacle.classList.add(obstacleType);\r\n\r\n            game.appendChild(obstacle);\r\n            obstacle.style.left = obstaclePosition + \"px\";\r\n            obstacles.push(obstacle);\r\n\r\n            let obstacleTimerId = setInterval(function() {\r\n                if (isGameOver) {\r\n                    clearInterval(obstacleTimerId);\r\n                    return;\r\n                }\r\n\r\n                const motoRect = moto.getBoundingClientRect();\r\n                const obstacleRect = obstacle.getBoundingClientRect();\r\n\r\n                if (\r\n                    obstacleRect.left < motoRect.right &&\r\n                    obstacleRect.right > motoRect.left &&\r\n                    obstacleRect.top < motoRect.bottom &&\r\n                    obstacleRect.bottom > motoRect.top\r\n                ) {\r\n                    gameOver();\r\n                }\r\n\r\n                obstaclePosition -= obstacleSpeed; \/\/ Usar obstacleSpeed\r\n                obstacle.style.left = obstaclePosition + \"px\";\r\n\r\n                if (obstaclePosition < -obstacle.offsetWidth) {\r\n                    clearInterval(obstacleTimerId);\r\n                    game.removeChild(obstacle);\r\n                    obstacles.shift();\r\n                }\r\n            }, 20);\r\n\r\n            obstacleTimerIds.push(obstacleTimerId);\r\n\r\n            \/\/ Generar pr\u00f3ximo obst\u00e1culo usando obstacleFrequency\r\n            let obstacleTimeout = setTimeout(generateObstacle, Math.random() * 1000 + obstacleFrequency);\r\n            obstacleTimerIds.push(obstacleTimeout);\r\n        }\r\n\r\n        function increaseDifficulty() {\r\n            difficultyLevel++;\r\n            obstacleSpeed += 1; \/\/ Incrementar la velocidad de los obst\u00e1culos\r\n            obstacleFrequency = Math.max(500, obstacleFrequency - 500); \/\/ Reducir el tiempo entre obst\u00e1culos, con un m\u00ednimo de 500ms\r\n\r\n            \/\/ Mostrar un mensaje de aumento de dificultad\r\n            alert(\"\u00a1Nivel de dificultad aumentado a \" + difficultyLevel + \"!\");\r\n        }\r\n\r\n        function gameOver() {\r\n            isGameOver = true;\r\n\r\n            playGameOverSound();\r\n\r\n            obstacleTimerIds.forEach(function(id) {\r\n                clearInterval(id);\r\n                clearTimeout(id);\r\n            });\r\n            obstacleTimerIds = [];\r\n\r\n            clearInterval(scoreInterval);\r\n\r\n            document.removeEventListener(\"keydown\", control);\r\n            game.removeEventListener(\"touchstart\", touchControl);\r\n            jumpButton.removeEventListener(\"touchstart\", touchControl);\r\n\r\n            obstacles.forEach(function(obst) {\r\n                if (obst.parentElement === game) {\r\n                    game.removeChild(obst);\r\n                }\r\n            });\r\n            obstacles = [];\r\n\r\n            \/\/ Detener la m\u00fasica de fondo si est\u00e1 reproduci\u00e9ndose\r\n            if (backgroundMusic) {\r\n                backgroundMusic.pause();\r\n                backgroundMusic.currentTime = 0;\r\n            }\r\n\r\n            saveScore();\r\n            alert(\"Fin del juego. Tu puntaje es: \" + score);\r\n            resetGame();\r\n        }\r\n\r\n        function saveScore() {\r\n            const database = firebase.database();\r\n            const scoresRef = database.ref('scores');\r\n\r\n            \/\/ Crear un nuevo objeto de puntaje\r\n            const newScore = {\r\n                name: username,\r\n                score: score\r\n            };\r\n\r\n            console.log(\"Intentando guardar el puntaje:\", newScore);\r\n\r\n            \/\/ Guardar el puntaje en Firebase\r\n            scoresRef.push(newScore, function(error) {\r\n                if (error) {\r\n                    console.error('Error al guardar el puntaje en Firebase:', error);\r\n                } else {\r\n                    console.log('Puntaje guardado exitosamente en Firebase.');\r\n                    displayLeaderboard(); \/\/ Actualizar la tabla de l\u00edderes\r\n                }\r\n            });\r\n        }\r\n\r\n        function displayLeaderboard() {\r\n            const database = firebase.database();\r\n            const scoresRef = database.ref('scores');\r\n\r\n            console.log(\"Intentando recuperar los puntajes desde Firebase.\");\r\n\r\n            \/\/ Obtener los puntajes ordenados de mayor a menor\r\n            scoresRef.orderByChild('score').limitToLast(5).once('value', function(snapshot) {\r\n                if (snapshot.exists()) {\r\n                    const scores = [];\r\n                    snapshot.forEach(function(childSnapshot) {\r\n                        scores.push(childSnapshot.val());\r\n                    });\r\n\r\n                    \/\/ Invertir el orden para que el mayor puntaje est\u00e9 primero\r\n                    scores.reverse();\r\n\r\n                    console.log(\"Puntajes recuperados:\", scores);\r\n\r\n                    \/\/ Actualizar la tabla de l\u00edderes\r\n                    leaderboardList.innerHTML = '';\r\n                    scores.forEach(function(entry) {\r\n                        let li = document.createElement('li');\r\n                        li.textContent = `${entry.name}: ${entry.score}`;\r\n                        leaderboardList.appendChild(li);\r\n                    });\r\n                } else {\r\n                    console.log(\"No se encontraron puntajes en Firebase.\");\r\n                    leaderboardList.innerHTML = '<li>No hay puntajes a\u00fan.<\/li>';\r\n                }\r\n            }, function(error) {\r\n                console.error('Error al recuperar puntajes de Firebase:', error);\r\n                leaderboardList.innerHTML = '<li>Error al cargar puntajes.<\/li>';\r\n            });\r\n        }\r\n\r\n        function resetGame() {\r\n            usernameInput.value = '';\r\n            usernameInputDiv.style.display = 'flex';\r\n            document.getElementById(\"gameContainer\").style.display = 'none';\r\n        }\r\n\r\n        function playJumpSound() {\r\n            if (!audioCtx) return;\r\n\r\n            const oscillator = audioCtx.createOscillator();\r\n            const gainNode = audioCtx.createGain();\r\n\r\n            oscillator.type = 'square';\r\n            oscillator.frequency.setValueAtTime(600, audioCtx.currentTime);\r\n\r\n            gainNode.gain.setValueAtTime(0.1, audioCtx.currentTime);\r\n\r\n            oscillator.connect(gainNode);\r\n            gainNode.connect(audioCtx.destination);\r\n\r\n            oscillator.start();\r\n            oscillator.stop(audioCtx.currentTime + 0.1);\r\n        }\r\n\r\n        function playGameOverSound() {\r\n            if (!audioCtx) return;\r\n\r\n            const oscillator = audioCtx.createOscillator();\r\n            const gainNode = audioCtx.createGain();\r\n\r\n            oscillator.type = 'sawtooth';\r\n            oscillator.frequency.setValueAtTime(200, audioCtx.currentTime);\r\n\r\n            gainNode.gain.setValueAtTime(0.2, audioCtx.currentTime);\r\n\r\n            oscillator.connect(gainNode);\r\n            gainNode.connect(audioCtx.destination);\r\n\r\n            oscillator.start();\r\n            oscillator.frequency.exponentialRampToValueAtTime(50, audioCtx.currentTime + 1);\r\n            oscillator.stop(audioCtx.currentTime + 1);\r\n        }\r\n\r\n        \/\/ M\u00fasica de fondo (opcional)\r\n        function startBackgroundMusic() {\r\n            backgroundMusic = new Audio('audio\/musica_fondo.mp3'); \/\/ Aseg\u00farate de tener este archivo\r\n            backgroundMusic.loop = true;\r\n            backgroundMusic.volume = 0.5; \/\/ Ajustar el volumen\r\n            backgroundMusic.play();\r\n        }\r\n\r\n        \/\/ Llamar a displayLeaderboard al cargar la p\u00e1gina para mostrar los puntajes existentes\r\n        window.onload = function() {\r\n            displayLeaderboard();\r\n        };\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Juego de la Motocicleta Mejorado con Firebase Ingresa tu nombre Iniciar Juego SE\u00d1OR WOK S W Puntaje: 0 Top 5 Puntajes: Saltar<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"_joinchat":[],"footnotes":""},"class_list":["post-1712","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/pages\/1712"}],"collection":[{"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/comments?post=1712"}],"version-history":[{"count":133,"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/pages\/1712\/revisions"}],"predecessor-version":[{"id":2052,"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/pages\/1712\/revisions\/2052"}],"wp:attachment":[{"href":"https:\/\/senorwok.com\/index.php\/wp-json\/wp\/v2\/media?parent=1712"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}