Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto] DESAFÍO: JUEGO ADIVINA EL NÚMERO

// Variables let numeroMaximoPosible = 50; // Número secreto entre 1 y 50 let numeroSecreto = Math.floor(Math.random() * numeroMaximoPosible) + 1; let numeroUsuario = 0; let intentos = 1; let maximosIntentos = 6; // Número máximo de intentos permitidos

while (numeroUsuario != numeroSecreto) { // Solicitar número al usuario numeroUsuario = parseInt(prompt(Me indicas un número entre 1 y ${numeroMaximoPosible} por favor:));

// Validar la entrada del usuario
if (isNaN(numeroUsuario) || numeroUsuario < 1 || numeroUsuario > numeroMaximoPosible) {
    alert(`Por favor, ingresa un número válido entre 1 y ${numeroMaximoPosible}.`);
    continue; // Vuelve al inicio del bucle sin contar el intento.
}

// Comparar el número ingresado con el número secreto
if (numeroUsuario == numeroSecreto) {
    // Acertamos
    alert(`¡Acertaste! El número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? 'vez' : 'veces'}.`);
} else {
    // Indicar si el número secreto es mayor o menor
    if (numeroUsuario > numeroSecreto) {
        alert('El número secreto es menor.');
    } else {
        alert('El número secreto es mayor.');
    }

    // Incrementar el contador de intentos
    intentos++;

    // Verificar si se superó el número máximo de intentos
    if (intentos > maximosIntentos) {
        alert(`¡Agotaste tus ${maximosIntentos} intentos! El número secreto era: ${numeroSecreto}. ¡Mejor suerte la próxima vez!`);
        break; // Salir del bucle
    }
}

}

// Mensaje de despedida if (numeroUsuario == numeroSecreto) { alert(¡Felicidades! Has adivinado el número secreto en ${intentos} ${intentos == 1 ? 'intento' : 'intentos'}. ¡Gracias por jugar!); } else { alert(¡Gracias por jugar! El número secreto era: ${numeroSecreto}. ¡Inténtalo de nuevo más tarde!); }

1 respuesta

Hola Walter, espero que estés bien

Tu código para el juego "Adivina el número" se ve bastante bien y parece que cubre la mayoría de los casos importantes, como validar la entrada del usuario y limitar el número de intentos. Sin embargo, hay un pequeño detalle que podrías considerar para mejorar la experiencia del usuario.

En el bucle while, después de que el usuario adivina el número correctamente, el mensaje de felicitación se muestra dos veces: una dentro del bucle y otra después del bucle. Podrías simplificar esto eliminando el mensaje dentro del bucle y dejando solo el mensaje final después de que el bucle termina. Aquí tienes una pequeña modificación:

while (numeroUsuario != numeroSecreto) {
    numeroUsuario = parseInt(prompt(`Me indicas un número entre 1 y ${numeroMaximoPosible} por favor:`));

    if (isNaN(numeroUsuario) || numeroUsuario < 1 || numeroUsuario > numeroMaximoPosible) {
        alert(`Por favor, ingresa un número válido entre 1 y ${numeroMaximoPosible}.`);
        continue;
    }

    if (numeroUsuario == numeroSecreto) {
        break; // Salir del bucle si adivinó correctamente
    } else {
        if (numeroUsuario > numeroSecreto) {
            alert('El número secreto es menor.');
        } else {
            alert('El número secreto es mayor.');
        }

        intentos++;

        if (intentos > maximosIntentos) {
            alert(`¡Agotaste tus ${maximosIntentos} intentos! El número secreto era: ${numeroSecreto}. ¡Mejor suerte la próxima vez!`);
            break;
        }
    }
}

if (numeroUsuario == numeroSecreto) {
    alert(`¡Felicidades! Has adivinado el número secreto en ${intentos} ${intentos == 1 ? 'intento' : 'intentos'}. ¡Gracias por jugar!`);
} else {
    alert(`¡Gracias por jugar! El número secreto era: ${numeroSecreto}. ¡Inténtalo de nuevo más tarde!`);
}

Con esta modificación, el mensaje de felicitación se muestra solo una vez, después de que el bucle termina, lo que hace que el flujo del programa sea más claro.

Espero haber ayudado y buenos estudios!