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)
4
respuestas

Juego Secreto v2 (agrego código al If fuera del For para el primer intento acertado)

Estimados, les comparto mi código en donde agregué unas lineas más a la explicación del profe, para que cuando el programa analice que la primer condición se cumple (valor de 3 en la primer posicion), no siga verificando los demás valores (5,7 y 9) de las otras posiciones. Ya que el profe agregó el break en el if para cortar el FOR y "salirse" al cumplirse la primer condición, pero a mi me siguió ejecutando para consultarme por los demás "secretos" faltantes, es decir, las demás posiciones.

Por lo tanto lo que hice fue agregar estas lineas al IF fuera del For:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <h1>JUEGO SECRETO VERSIÓN 2</h1>

    <input/>
    <button>Verificar si acertó con el secreto</button> <!--Esto me va a comparar el valor del input con el valor secreto de Javascript-->

    <script>

        var secretos = [3,5,7,9];        

        var input =  document.querySelector("input"); 
        input.focus(); 

        function verificar(){

            var encontrado = false;

            for(var posicion = 0; posicion <= secretos.length; posicion++){

                if(parseInt(input.value) == secretos[posicion]){

                    alert("Usted ACERTÓ");
                    encontrado = true;
                    break;
                }
            }            

            if(encontrado == true){
                document.write("ESTAS ADENTRO!!!..ENCONTRASTE EL SECRETO!!!");
            }else{

                alert("Usted ERRÓ");
            }            

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


        }

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

    </script>
</body>
</html>

No sé si es lo correcto (al menos así lo interpreté yo) Saludos!

4 respuestas

break corta la ejecución, no debería seguir ejecutando el for

Cuando ya le indicas que encontrado = true; y ejecutas break dentro del for deberías hacer todo fuera (solo una sugerencia).

En cuanto a los manejo de los boolean es valido hacer lo siguiente

if(encontrado){ //esto se puede hacer ya que encontrado == true es un boolean y precisamente encontrado también lo es
                document.write("ESTAS ADENTRO!!!..ENCONTRASTE EL SECRETO!!!");
            }else{

                alert("Usted ERRÓ");
            }     

Gracias por tu aporte, ahi saqué el " == true" en el if y dejé sólo el "if(encotrado)". Fijate si probando mi código (sacando lo que agregué, es decir, haciéndolo como el profe) te sigue ejecutando el FOR (a pesar del break). Luego me cuentas si?

Colocando esta linea:

for (var posicion = 0; posicion <= secretos.length; posicion++) {
        console.log(posicion); //imprime la posicion en cada ciclo
        if (parseInt(input.value) == secretos[posicion]) {

          alert("Usted ACERTÓ");
          encontrado = true;
          break;
        }
      }

Podrás notar en la consola que solo se ejecuta hasta que encuentra un valor

  • Si ingresas 3, salida de consola 0
  • Si ingresas 7, salida de consola 0 1 y 2 Por lo tanto notas que break si finaliza el for ya que esa es su función, romper el ciclo.
solución!

Ahí lo pude corroborar, estaba bien mi código entonces, tal vez no se me había actualizado correctamente. Correcto, el break sí me está finalizado el FOR. Muchas gracias compañero!