2
respuestas

Ayuda estoy trabadisimo. Juego adivinacion Break

Al querer mejorar el juego que habia echo de adivinacion no pude. Lo podria haber simplificado y me funciona. Pero quise dejarlo como lo habia echo y mejorarlo con lo nuevo que vimos y me trabe. Me marea tanto if y else creo que va por ahi el error. Comparto lo que tengo haber si alguien puede ayudarme. Gracias!


<meta charset="UTF-8">

<h1>JUEGO: ADIVINAR NUMERO SECRETO</h1>

<script>

    function saltarLinea() {

        document.write("<br>");    
        document.write("<br>");    
        document.write("<br>");    

    }  

    function imprimir(frase) {

        document.write(frase);
        saltarLinea();
    }

    function sortea(n) {

        return Math.round(Math.random() * n);    
    }

var n = parseInt(prompt("Buenas! \nTe pido un numero para limitar el rango en el que deberas adivinar. \nEl rango quedaria de 0 hasta el numero elegido: "));

var numeroSecreto = sortea(n);

var intentos = 3;

var contadorIntentos = 1;


while (contadorIntentos <= intentos) {

    var numeroPensado = parseInt(prompt("Muy bien. Ahora trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo contaras con 3 intentos. \nEl número secreto es el: "));

    if (numeroPensado == numeroSecreto) {

        alert("¡Acertaste! El número secreto era el: " + numeroSecreto);
        break;

    } else {

        if (numeroPensado > numeroSecreto) {

            alert("¡Erraste! El número secreto es menor a: " + numeroPensado );
            //numeroPensado = parseInt(prompt("Probemos de nuevo. Trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo te quedan " + (Intentos - contadorIntentos) + " intentos. \nEl número secreto es el: "));

        } else {

            alert("¡Erraste! El número secreto es mayor a: " + numeroPensado );
            //numeroPensado = parseInt(prompt("Probemos de nuevo. Trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo te quedan " + (Intentos - contadorIntentos) + " intentos. \nEl número secreto es el: "));
        }

    } contadorIntentos++;
}

if (numeroPensado == numeroSecreto) {

    alert("¡Acertaste! El número secreto era el: " + numeroSecreto);

} else {

        if (numeroPensado > numeroSecreto) {

        alert("¡Erraste! El número secreto era menor a: " + numeroPensado );
        //numeroPensado = parseInt(prompt("Probemos de nuevo. Trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo te quedan " + (Intentos - contadorIntentos) + " intentos. \nEl número secreto es el: "));

        } else {

            alert("¡Erraste! El número secreto era mayor a: " + numeroPensado );
            //numeroPensado = parseInt(prompt("Probemos de nuevo. Trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo te quedan " + (Intentos - contadorIntentos) + " intentos. \nEl número secreto es el: "));

        }

}

alert ("Perdiste! El número secreto era el: " + numeroSecreto)


</script>

si alquien me ayuda a ver el error le agradezco. gracias!

2 respuestas

Hola Christian, espero estes teniendo una buena tarde ! para realizar un anidado de "If" lo codeas de la siguiente manera :Anidado "If" ATOM EDITOR

Tambien vi que tenias un while y fuera de este, una porción de código que cumplía la misma función. ATOM EDITOR : CODIGO REPETIDO Termine eliminando esa parte de código y quedándome con el ultimo alert que le indica al usuario que "erro al numero" luego de superar el limite de intentos. Vi un par de líneas de código comentadas también, si tu intención era incluirlas en tu programa, las mismas no funcionan porque todas tienen escrita la variable "intentos" en mayúscula.

Aca te dejo el código con las correcciones que te mencione :



  function saltarLinea() {

    document.write("<br>");
    document.write("<br>");
    document.write("<br>");

  }

  function imprimir(frase) {

    document.write(frase);
    saltarLinea();
  }

  function sortea(n) {

    return Math.round(Math.random() * n);
  }

  var n = parseInt(prompt("Buenas! \nTe pido un numero para limitar el rango en el que deberas adivinar. \nEl rango quedaria de 0 hasta el numero elegido: "));

  var numeroSecreto = sortea(n);

  var intentos = 3;

  var contadorIntentos = 1;

  var numeroPensado = parseInt(prompt("Muy bien. Ahora trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo contaras con 3 intentos. \nEl número secreto es el: "));

  while (contadorIntentos <= intentos) {


    if (numeroPensado == numeroSecreto) {

      alert("¡Acertaste! El número secreto era el: " + numeroSecreto);
      break;

    } else if (numeroPensado > numeroSecreto) {

      alert("¡Erraste! El número secreto es menor a: " + numeroPensado);
      numeroPensado = parseInt(prompt("Probemos de nuevo. Trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo te quedan " + (intentos - contadorIntentos) + " intentos. \nEl número secreto es el: "));

    } else {

      alert("¡Erraste! El número secreto es mayor a: " + numeroPensado);
      numeroPensado = parseInt(prompt("Probemos de nuevo. Trata de adivinar el número secreto entre 0 y " + n + ". \nTen en cuenta que solo te quedan " + (intentos - contadorIntentos) + " intentos. \nEl número secreto es el: "));
    }
    contadorIntentos++;
  }

  if (numeroPensado != numeroSecreto) {
    alert("Perdiste! El número secreto era el: " + numeroSecreto)
  }

Sos un crack Martin!!! muchísimas gracias! había pasado toda la tarde con el ejercicio y no lograba resolverlo. No puedo creer que entre los errores q tenia no haya visto que puse una mayúscula q no iba en el nombre de una variable, malísimo! Otra cosa que note es que me deja jugar 4 intentos, siendo el ultimo el intento numero 0 . Como puedo hacer para q no llegue hasta esa instancia? ósea te queda 2 intento, y que ese sea el ultimo. Gracias!!!!!