Bueno de forma sencilla y funcional unicamente cambiaria los rangos
para el de 1 a 100:
let numeroSecreto = Math.floor(Math.random()*100)+1; let numeroUsuario = 0; let intentos = 1; let maximosIntentos = 4;
//Solo añadiría un intento más y conservaría el resto del código.
para el de 1 a 1000 : let numeroSecreto = Math.floor(Math.random()*1000)+1; let numeroUsuario = 0; let intentos = 1; let maximosIntentos = 7;
// Por los rangos lo haría de 7 intentos y conservaría el resto del código.
Propuesta personal: // Mi propuesta es que el usuario establezca los rangos de los números, por así decirlo que vaya subiendo la dificultad y va probando progresivamente los diferentes rangos pero el número de intentos es fijo con 6. Puede ser una buena alternativa, que sigue siendo dinámica y se conserva parte del código original.
let rangoInferior = parseInt(prompt('Establece un rango inferior:')); let rangoSuperior = parseInt(prompt('Establece un rango superior:')); let numeroSecreto = Math.floor(Math.random() * (rangoSuperior - rangoInferior + 1)) + rangoInferior; let numeroUsuario = 0; let intentos = 1; let maximosIntentos = 6;
while (numeroUsuario != numeroSecreto && intentos <= maximosIntentos) { numeroUsuario = parseInt(prompt("Indica un número dentro del rango asignado por favor:"));
if (numeroUsuario < numeroSecreto) {
alert('El número secreto es mayor');
} else if (numeroUsuario > numeroSecreto) {
alert('El número secreto es menor');
}
// Verificamos si el usuario adivinó el número *antes* de incrementar los intentos
if (numeroUsuario == numeroSecreto) {
alert(`Acertaste, el número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? 'vez' : 'veces'}`);
break; // Salimos del bucle porque el usuario ha ganado
}
intentos++;
if (intentos > maximosIntentos) {
alert(`Llegaste al número máximo de ${maximosIntentos} intentos. El número era ${numeroSecreto}`);
break; // Salimos del bucle porque se alcanzó el límite de intentos
}
}