5
respuestas

Tengo una duda

Según el código que muestra el tutor, me parece que está redundante. Es el mismo mensaje que muestra en el if dentro del While, que en el que está afuera. ¿No se puede dejar sólo el mensaje que está en el if dentro del while?. La verdad no entiendo para que se vuelve a poner un condicional después del bucle. Este es el código que dan como ejemplo.

<h1>PROGRAMA JUEGO DE ADIVINACION </h1>
<script>
    function saltarLinea() {
        document.write("<br>");    
        document.write("<br>");    
        document.write("<br>");    
    }  
    function imprimir(frase) {
        document.write(frase);
        saltarLinea();
    }
    var numeroPensado = Math.round(Math.random()*10);
    var intentos = 3;
    var contador = 1;

    while (contador <= intentos) {
        var numeroLanzado = parseInt(prompt("Ingrese un número entre 0-10"));
        if (numeroPensado == numeroLanzado){
            //corregir aquí
            alert("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
            break;
        }
        else {
            alert("usted erró");
        }
        contador++;
    }
    if (numeroPensado == numeroLanzado){
        //corregir aquí
        imprimir("usted acertó, en el intento " + contador + " el número pensado era " + numeroPensado);
    }
    else {
        imprimir("usted erró, el número pensado era " + numeroPensado);
    }
    imprimir("fin");
</script> 

Le comenté ese condicional y funciona perfectamente.

<meta charset="utf-8">

<h1> PROGRAMA DE ADIVINACIÓN </h1>

<br>
<script type="text/javascript">

    function saltarLinea() {
        document.write("<br><br>");
    }

    function imprimir(frase){
        document.write(frase);
        saltarLinea();
    }

var numPensado = Math.round(Math.random()*10)
var contador = 1
var intentos = 3

while(contador <= intentos){
var numLanzado = parseInt(prompt("Ingrese un número entre 0 y 10. Tiene solo tres intentos"));
    if (numLanzado == numPensado){
        alert("Muy bien. Acertaste en el intento:  " + contador + ". \n  El número pensado es:  " + numPensado);
        break;
    } else {
        alert("Fallaste. Estás en el intento" + contador);
    }
    contador++
}
    //if(numPensado == numLanzado){
        //imprimir("El numero secreto era: " + "usted acertó en el intento " + contador + numPensado);
    //} else{
        //imprimir("El número pensado era: " + numPensado);
    //}
    //imprimir(FIN)

</script>
5 respuestas

Tienes razon.

venia por esto mismo :D , cuando aciertas se repite la sentencia del acierto, excelente arreglo :)

Es porqué el segundo condicional solo sirve para imprimirlo en pantalla (en el "mundo HTML"), el tuyo solo lo muestra en pantalla con la función de alert. Saludos!

si es cierto y si se cambia a "alert" igualmente muestra los dos mensajes que salen tanto del " prompt " como de " imprimir ", y yo como loco buscando la forma en que no se repitiera tanto el mensaje...

la razon por la que el if se repite fuera del while es para que quede en pantalla una impresión del resultado final del jugador.

Pero, en cambio el alert dentro del while era para que el usuario o jugador supiera si acertó o fallo en cada intento que lanzaba pero no le mostraba al final algun score o resultado final o rendimiento, por que al salir del while no quedaba nada impreso en pantalla mas que la palabra "FIN."

saludos yo lo hice asi con un par de modificaciones:

JUEGO DE ADIVINANZAS