Cargando...

<div class="container">
    <h1>Adivina el Número</h1>
    <p>Estoy pensando en un número entre 1 y 100. ¡Intenta adivinarlo!</p>
    <div class="game-area">
        <input type="number" id="guessInput" placeholder="Introduce tu número">
        <button id="checkButton">Comprobar</button>
    </div>
    <p id="message"></p>
    <button id="resetButton" style="display: none;">Jugar de nuevo</button>
</div>

<script>
    // Asegura que el DOM (Document Object Model) esté completamente cargado antes de ejecutar el script
    document.addEventListener('DOMContentLoaded', () => {
        // Seleccionar elementos del DOM por su ID
        const guessInput = document.getElementById('guessInput');
        const checkButton = document.getElementById('checkButton');
        const messageDisplay = document.getElementById('message');
        const resetButton = document.getElementById('resetButton');

        let randomNumber; // Variable para almacenar el número aleatorio a adivinar
        let attempts = 0; // Contador de intentos del jugador
        const maxAttempts = 10; // Número máximo de intentos permitidos

        // Función para iniciar un nuevo juego
        function newGame() {
            // Genera un número aleatorio entre 1 y 100 (incluidos)
            randomNumber = Math.floor(Math.random() * 100) + 1;
            attempts = 0; // Reinicia el contador de intentos
            messageDisplay.textContent = ''; // Borra cualquier mensaje anterior
            guessInput.value = ''; // Borra el valor del campo de entrada
            guessInput.disabled = false; // Habilita el campo de entrada
            checkButton.disabled = false; // Habilita el botón de comprobar
            resetButton.style.display = 'none'; // Oculta el botón de reiniciar juego
            // console.log('Número a adivinar (solo para depuración):', randomNumber); // Línea para depuración, puedes eliminarla
        }

        // Función para comprobar la adivinanza del usuario
        function checkGuess() {
            const userGuess = parseInt(guessInput.value); // Obtiene el valor del input y lo convierte a número entero

            // Validación de la entrada del usuario
            if (isNaN(userGuess) || userGuess < 1 || userGuess > 100) {
                messageDisplay.textContent = 'Por favor, introduce un número válido entre 1 y 100.';
                messageDisplay.style.color = 'orange'; // Mensaje de error en color naranja
                return; // Sale de la función si la entrada no es válida
            }

            attempts++; // Incrementa el contador de intentos

            // Comprueba si la adivinanza es correcta
            if (userGuess === randomNumber) {
                messageDisplay.textContent = `¡Felicidades! Adivinaste el número ${randomNumber} en ${attempts} intentos.`;
                messageDisplay.style.color = 'green'; // Mensaje de éxito en color verde
                endGame(); // Termina el juego
            } else if (attempts >= maxAttempts) { // Comprueba si se agotaron los intentos
                messageDisplay.textContent = `¡Se acabaron los intentos! El número era ${randomNumber}.`;
                messageDisplay.style.color = 'red'; // Mensaje de derrota en color rojo
                endGame(); // Termina el juego
            } else if (userGuess < randomNumber) { // La adivinanza es demasiado baja
                messageDisplay.textContent = `Demasiado bajo. Intento ${attempts} de ${maxAttempts}. ¡Intenta de nuevo!`;
                messageDisplay.style.color = 'blue'; // Mensaje de pista en color azul
            } else { // La adivinanza es demasiado alta
                messageDisplay.textContent = `Demasiado alto. Intento ${attempts} de ${maxAttempts}. ¡Intenta de nuevo!`;
                messageDisplay.style.color = 'blue'; // Mensaje de pista en color azul
            }
        }

        // Función para finalizar el juego
        function endGame() {
            guessInput.disabled = true; // Deshabilita el campo de entrada
            checkButton.disabled = true; // Deshabilita el botón de comprobar
            resetButton.style.display = 'block'; // Muestra el botón de reiniciar juego
        }

        // Configuración de los "Event Listeners"
        // Cuando se hace clic en el botón "Comprobar", se ejecuta la función checkGuess
        checkButton.addEventListener('click', checkGuess);

        // Cuando se presiona una tecla en el campo de entrada, si es "Enter", se ejecuta checkGuess
        guessInput.addEventListener('keypress', (event) => {
            if (event.key === 'Enter') {
                checkGuess();
            }
        });

        // Cuando se hace clic en el botón "Jugar de nuevo", se ejecuta la función newGame
        resetButton.addEventListener('click', newGame);

        // Inicia un nuevo juego cuando la página se carga por primera vez
        newGame();
    });
</script>