Mejoré el juego de las adivinanzas con lo aprendido en la clase, lo que hice fue ponerle un input y un botón y que solo le de al usuario 3 intentos para poder adivinarlo. Tardé muchas horas averiguando porqué no me corría, porque siempre que entraba y le apretaba un botón, me salía que me quedaban 3 intentos y nunca bajaba de ahí, hasta que al final la solución era que mi variable "intentos" la declaré fuera de la función y si me corrió bien, ya me dejaba ejecutar con normalidad el código. Les dejo mi solución con comentarios de lo que le moví, a continuación dejo el código que no me corría:
<meta charset="UTF-8">
<h1>PROGRAMA - JUEGO ADIVINANZA</h1>
<h4>Ingresa un número entre 0 y 10</h4>
<input />
<button>Aceptar</button>
<script>
function saltarLinea() {
document.write("<br>");
document.write("<br>");
document.write("<br>");
}
function imprimir(frase) {
document.write(frase);
saltarLinea();
}
function sacarNumero(n) {
return Math.round(Math.random() * n);
}
function verificar() {
//Esta función fue la que saqué de la función y la declaré afuera
var intentos = 3;
while(intentos >= 1) {
if (input.value == numeroAleatorio) {
imprimir("Felicidades, lo has conseguido, el número correcto era: " + numeroAleatorio);
break;
} else {
intentos--;
alert("Has fallado, intentalo de nuevo - Intentos restantes: " + intentos);
input.focus();
break;
}
}
if(intentos == 0){
imprimir("Has superado el límite máximo de intentos. El número era: " + numeroAleatorio);
}
input.value = "";
input.focus();
}
var numeroMaximo = 10;
var numeroAleatorio = sacarNumero(numeroMaximo);
var input = document.querySelector("input");
var button = document.querySelector("button");
input.focus();
button.onclick = verificar;
</script>
Y esta fue mi solución moviendo la variable:
<meta charset="UTF-8">
<h1>PROGRAMA - JUEGO ADIVINANZA</h1>
<h4>Ingresa un número entre 0 y 10</h4>
<input />
<button>Aceptar</button>
<script>
function saltarLinea() {
document.write("<br>");
document.write("<br>");
document.write("<br>");
}
function imprimir(frase) {
document.write(frase);
saltarLinea();
}
function sacarNumero(n) {
return Math.round(Math.random() * n);
}
function verificar() {
while(intentos >= 1) {
if (input.value == numeroAleatorio) {
imprimir("Felicidades, lo has conseguido, el número correcto era: " + numeroAleatorio);
break;
} else {
intentos--;
alert("Has fallado, intentalo de nuevo - Intentos restantes: " + intentos);
input.focus();
break;
}
}
if(intentos == 0){
imprimir("Has superado el límite máximo de intentos. El número era: " + numeroAleatorio);
}
input.value = "";
input.focus();
}
//Aquí fue donde moví la variable y al final el ciclo while si me dejí
var intentos = 3;
var numeroMaximo = 10;
var numeroAleatorio = sacarNumero(numeroMaximo);
var input = document.querySelector("input");
var button = document.querySelector("button");
input.focus();
button.onclick = verificar;
</script>
¿Por qué pasó esto? No logro comprender por más que le doy vueltas a la cabeza