Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Juego del adivina el número con input y button

Buenas, intente re hacer el código del juego de adivinar el número. Solo que esta vez que el usuario ingrese el número en el cuadro y al tocar el botón "Verificar el número" el código ejecute la función y le avise con un pop-up si acertó o no y en el caso de que no acierte le diga cuantos intentos le quede. El tema es que al ejecutar y hacer click en el boton me sale el aviso pero al tocar "Aceptar" el pop-up vuelve a salir como si hubiera vuelto a ingresar otro número y así hasta que termina el ciclo. Dejo el código para ver si alguno se anima a corregir el error que no encuentro, el que lo realice le invito una ronda de cervezas :D

<+center><+h1>JUEGO ADIVINA EL NÚMERO</h1+></center+>

<+center>Ingresa un número del 1 al 10</center+> <+center></center+> <+center><+button>Verificar si acertó</button+></center+>

script

var numPensado = Math.round(Math.random()*10);
var intentos = 3;
var contador = 1;
var intenRest = 3;
var input = document.querySelector("input");

function verificar() {

    while (contador <= intentos) {

        if (parseInt(input.value) == numPensado) {

            alert("Felicidades, acertaste en el intento " + intenRest +  ". El número pensado era " + numPensado);
        break;

        }
        else {
            if (contador == intentos) {

                alert("Fallaste en el máximo de intentos. El número pensado era " + numPensado);    
            }
            else {
                intenRest = intenRest - 1;
                alert("Mala suerte, no acertaste. Intentos restantes: " + intenRest);
            }
        }
        contador++;
    }
}

var button = document.querySelector("button");
button.onclick = verificar;

script

edit: puse unos "+" en la parte de html y borre los <> en la parte de los script para que se viera el código. Saludos

2 respuestas
solución!

Hola Pablo,

Primero lo que te sucedía de que al cerrar el pop-up te volvía a saltar la alerta como si hubieses introducido un nuevo número es debido a que tu función contiene un ciclo while. No es necesario que la función verificar() sea un bucle while debido a que la función es llamada cada vez que el botón es presionado:

button.onclick = verificar;

La función verificar se suscribe al evento onclick, es decir, cada vez que presione el botón se llamará a función verificar. Vuelvo a repetir, no es necesario un ciclo while debido a que solamente quiero que se evalúe si el número yo que introduje es igual al generado si es que presiono el botón.

Dicho esto, te dejo el código corregido:

<!DOCTYPE html>
<html>
    <h1>JUEGO DE ADIVINA EL NÚMERO</h1>
    <input/>
    <button>Verificar si acertó</button>
</html>
<script>
var numPensado = Math.round(Math.random()*10); //Generamos un número aleatorio entre 0 y 10
var intentos = 3; //Número de intentos
var contador = 1; //Contador de intentos
var intenRest = 3; //Número de intentos restantes
var input = document.querySelector("input"); //Obtenemos el input

function verificar() {
    if(contador <= intentos){ //Verificamos que el contador sea menor o igual a los intentos restantes
        if (input == numPensado) { //Verificamos que el número ingresado sea igual al número pensado
            alert("Felicidades, acertaste en el intento " + intenRest +  ". El número pensado era " + numPensado); //Mostramos un mensaje de felicidades por acertar
        }else { //Si no se cumplió la condición anterior hacemos lo siguiente:
            intenRest = intenRest - 1; //Restamos uno al contador de intentos restantes
            contador++; //Aumentamos el contador de intentos
            alert("Mala suerte, no acertaste. Intentos restantes: " + intenRest); //Mostramos un mensaje de que no se cumplió la condición
        }
    }
    else{//Si el contador es mayor a los intentos restantes mostramos un mensaje de que se terminaron los intentos
        alert("Fallaste en el máximo de intentos. El número pensado era " + numPensado); 
    }
}


var button = document.querySelector("button");//Obtenemos el botón
button.onclick = verificar;//Suscribimos la función verificar al botón
</script>

Además agregué unos comentarios para que puedas comprender la lógica de cada línea.

Espero haberte ayudado, saludos!

Muchas gracias por responder, llego a mi casa y veo el código corregido. Saludos