Solucionado (ver solución)
Solucionado
(ver solución)
6
respuestas

¿Me ayudan a encontrar el error?

Hola comunidad ONE,

Estoy tratando de implementar los botones en el juego de adivinar un número, pero no consigo que mi juego me deje realizar los 3 intentos que he estipulado para ello. Cuando no acierto el número me salta el pop-up "No tuvo suerte. Intente de nuevo" le doy en aceptar y me vuelve a salir.

Les agradecería mucho si me ayudan a darme cuenta de mi error.

<meta charset="UTF-8">

<h1>ADIVINA EL NÚNMERO</h1>
<h3>Ingrese un numero del 1 al 10 y presione el boton</h3>

<input/>
<button>Prueba tu suerte</button>


<script>

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


    function adivinar () {

        while (contador <= intentos) {

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

                alert("Usted acertó, el numero pensado era " + numeroPensado);
                break;

            }    

            else {


                if(contador == 3) {

                alert("Game Over!!! No tienes más intentos.");

                } 

                else {

                alert("No tuvo suerte. Intente de nuevo");

                }    

            }

            contador++;

            input.value = "";
            input.focus();

        }


    }

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



</script>
6 respuestas

Buenas, el problema es que no hace falta el ciclo while para que funcione el programa, por lo menos dentro del entorno de html, si estuviesemos en una consola sin html estaria bien como esta. Bonus track... Te recomiendo ordenar tu codigo, trata de que entre cada sentencia no haya espacios, las funciones ponelas todas juntas abajo o arriba y el programa todo junto.

solución!

Hola Wilson, solo es necesario que agregues un contador dentro de la función para saber cuantas veces se ejecuta el botónprueba suerte. También puedes agregar dentro de la función input.disabled = true y button.disabled = true para desactivar el input y el boton una vez gana o se terminan los intentos. Te comparto el código Un saludo

<meta charset="UTF-8">

<h1>ADIVINA EL NÚNMERO</h1>
<h3>Ingrese un numero del 1 al 10 y presione el boton</h3>

<input/>
<button>Prueba tu suerte</button>


<script>

    var numeroPensado = Math.round(Math.random()*10);
    var intentos = 1;
    var input = document.querySelector("input");
    var button = document.querySelector("button");
    input.focus();


    button.onclick = function (){
        input.focus();
        input.value = "";

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

            alert("Usted acertó, el numero pensado era " + numeroPensado);
            input.disabled = true;
            button.disabled = true;
        }    

        else {
            if(intentos == 3) {

                alert("Game Over!!! No tienes más intentos.");
                input.disabled = true;
                button.disabled = true;
            } 
            else {
                alert("No tuvo suerte. Intente de nuevo");

            }    
        }

        intentos++;

   }

</script>

Muchas gracias Luis David por tu ayuda, no tenía idea como hacerlo funcionar. Agradecido mil!

Agradezco mucho tu aporte Martin! Seguiré tus recomendaciones.

Hola Luis David, agradezco de nuevo por tu ayuda. Seguí probando el código que me sugeriste y me di cuenta que cuando (parseInt(input.value) == numeroPensado) no salta el pop-up "Usted acertó" por el contrario salta el que dice "No tuvo suerte, intenta de nuevo". No encuentro por qué pasa esto. Si me puedes dar un mano, te lo agradezco mucho.

<meta charset="UTF-8">

<h1>ADIVINA EL NÚNMERO</h1>
<h3>Ingrese un numero del 1 al 10 y presione el boton</h3>

<input/>
<button>Prueba tu suerte</button>


<script>

    var numeroPensado = 6;
    var intentos = 1;
    var input = document.querySelector("input");
    var button = document.querySelector("button");
    input.focus();


    button.onclick = function () {
        input.focus();
        input.value = "";

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

            alert("Usted acertó, el numero pensado era " + numeroPensado);
            input.disabled = true;
            button.disabled = true;
        }    

        else {
            if(intentos == 3) {

                alert("Game Over!!! No tienes más intentos.");
                input.disabled = true;
                button.disabled = true;
            } 
            else {
                alert("No tuvo suerte. Intente de nuevo");

            }    
        }

        intentos++;

   }

</script>

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Hola wilson, sin querer coloque el input.value = ""; al principio del código con lo cual borra la entrada. Puedes colocarlo debajo de intentos++; para que limpie la entrada después de validarla y no antes. Un saludo

Muchas gracias, Luis!