Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

[Proyecto] Proyecto Final

Mi solución con algunos apuntes:

alert('Bienvenido al juego del número secreto');
//Se le pedirá el mínimo valor que puede tomar el número secreto y el máximo valor que puede tomar el número secreto
let minimo = parseInt(prompt('Ingresa el valor entero mínimo del número secreto:'));
let maximo = parseInt(prompt('Ingresa el valor entero máximo del número secreto:'));
/*
Lógica para mis random entre intervalos solicitados:
Funciona tanto para intervalos positivos como negativos.
min = -6
max = 7
0 <= random < 1
mult((max+1)-min)
0 <= random < 14
+min
-6 <= random < 8
floor (parte entera)
-6 <= random <= 7
min <= random <= max
*/
let numeroSecreto = Math.floor((Math.random() * ((maximo+1)-minimo)+minimo)); // Genera un número secreto aleatorio entre el mínimo y el máximo ingresados por el usuario
//let numeroSecreto = Math.floor(Math.random() * 10) + 1; // Genera un número secreto aleatorio entre 1 y 10
//let numeroSecretoMasSeguro = window.crypto.getRandomValues(new Uint32Array(1))[0] % 10 + 1; // Genera un número secreto aleatorio entre 1 y 10
let maximoIntentos = parseInt(prompt('Ingresa el valor máximo de intentos que deseas:'));
let intento = parseInt(prompt(`Elige un número entre ${minimo} y ${maximo}`));
console.log('Valor de intento:', intento);
console.log('Resultado de la comparación:', intento == numeroSecreto);
let contadorIntentos = 1;
console.log('Primer intento');

while (intento != numeroSecreto) {
    console.log('Intento incorrecto, valor ingresado:', intento);
    
    if (intento < numeroSecreto) {
        alert('Incorrecto. El número secreto es mayor.');
    } else {
        alert('Incorrecto. El número secreto es menor.');
    }
    console.log('Resultado de la comparación:', intento == numeroSecreto);
    if (intento!= numeroSecreto && contadorIntentos == maximoIntentos) {
        alert(`Llegaste al número máximo de intentos.`);
        break;
    }
    //Incrementamos el contador de intentos cuando el usuario falla
    contadorIntentos++;
    // Solicita un nuevo intento al usuario
    intento = prompt(`Elige un número entre ${minimo} y ${maximo}`);
    // Agregué un console.log para verificar el valor de "contadorIntentos" en cada iteración
    console.log('Número de intentos:', contadorIntentos);
}
if (intento == numeroSecreto) {
    alert(`Adivinaste, el número secreto era: ${numeroSecreto}. Intentaste ${contadorIntentos} ${contadorIntentos > 1 ? 'veces.' : 'vez.'}`);
}
else {
    alert(`Fallaste. Intentaste ${contadorIntentos} ${contadorIntentos > 1 ? 'veces' : 'vez'}, el número secreto era: ${numeroSecreto}.`);
}
2 respuestas

Hola, ¿cómo estás? Espero que te encuentres muy bien.

¡Felicitaciones por tu avance en el aprendizaje! Queremos recordarte que estamos priorizando el uso del foro para resolver dudas, ya que así podemos optimizar los tiempos de respuesta y asegurarnos de que todos puedan beneficiarse de las respuestas.

Además, para que no dejes de compartir tus códigos, actividades y ejercicios, en Discord. Allí puedes mostrar lo que estás haciendo, recibir sugerencias y colaborar con tus compañeros.

¡Te esperamos por allá!

Un saludo.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Hola Gustavo, me gustaría compartir contigo otra forma para que el usuario ingrese bajo su criterio el numero máximo ha adivinar, y un numero de intentos acorde a este mismo criterio, para que el usuario siempre tenga, en mi caso un 30% de probabilidad de acierto. Si te resulto de ayuda, te invito a que conectemos en LikedIn Daniel Felipe Mahecha

//Almacena el valor del criterio que el usuario ingrese
let criterio = parseInt(prompt('Enter the upper limit to guess'));

//El usuario ingresa el criterio para adivinar
function getRandomInt(criterio) {
  return Math.floor(Math.random() * criterio + 1);
}

//Número que el usuario quiere adivinar
let secretNumber = getRandomInt(criterio);

//Máximo de intentos, siempre sera el 30% del criterio, para mantener la dificultad 
let maxAttemptsAvailables = Math.floor((max*30)/100);

 //Si supera el máximo de intentos (30% del criterio) perderá
    if(attempts > maxAttemptsAvailables){
        alert(`You reach the maximum of attempts available: ${maxAttemptsAvailables}` );
        break;
    }