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

[Bug] AYUDA, me aparece que lo logré en 135962 intentos

Cuando ejecuto y acierto, me sale un número muy alto, además de que cuando adivino no se para el programa, sigue preguntando el número, ¿tengo algo mal en el código? agradezco su ayuda.

//variables let numeroSecreto = 5;let numeroUsuario = 0; let intentos = 1; let palabraVeces = 'vez'; while (numeroUsuario != numeroSecreto){ let numeroUsuario = prompt("Escribe un número del 1 al 10, por favor:"); console.log(numeroUsuario);

if (numeroUsuario == numeroSecreto){
    alert(`Acertaste, el número es: ${numeroUsuario }. Lo hiciste en ${intentos} ${palabraVeces}`);
} else { 
    if (numeroUsuario < numeroSecreto){   
    alert('El número secreto es mayor');
} else {
    alert('El número secreto es menor');
}
    intentos = intentos + 1;
    palabraVeces = "veces";
}

}

7 respuestas
solución!

el error esta que has declarado nuevamente en el let numeroUsuario = prompt("Escribe un número del 1 al 10, por favor:"); y tambien tienes que transformar el prompt de string a integer con ParseInt

let numeroSecreto = 5;
let numeroUsuario = 0; 
let intentos = 1;
let palabraVeces = 'vez';

while (numeroUsuario != numeroSecreto){ 
  numeroUsuario = parseInt(prompt("Escribe un número del 1 al 10, por favor:")); 
  console.log(numeroUsuario);
  if (numeroUsuario == numeroSecreto){
    alert(`Acertaste, el número es: ${numeroSecreto}. Lo hiciste en ${intentos} ${palabraVeces}`);
  } else { 
    if (numeroUsuario < numeroSecreto){   
      alert('El número secreto es mayor');
    } else {
      alert('El número secreto es menor');
    }
    intentos++;
    palabraVeces = "veces";
  }
}

Hola El problema principal por el que el juego no se cierra es porque no usas la palabra break en el while. Debería estar en el primer if, cuando aciertas el resultado:

if (numeroUsuario == numeroSecreto) { alert(Acertaste, el número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${palabraVeces}); break; // Rompe el bucle cuando el usuario acierta }

Con esto, ya funcionaría.

Además, te recomiendo usar parseInt en el prompt porque devuelve el valor en formato string y parseInt lo convierte en un entero. Así, la condición numeroUsuario == numeroSecreto comparará valores del mismo tipo y También podrías simplificar la parte de intentos usando intentos++.

Espero que te ayude!

Muchísimas gracias! :) pero no me sigue funcioando

Holaa CREO que es por el numero de intentos en vez de colocarle 1 tienes que ampliar el rango de intentos ( no se como funciona jaja) pero lo amplie a 6 y lo hice 11 veces y me dio las 11, en cambio cuando lo deje en 1 intento lo hice 6 veces y ya me marcaba un numero gigante como a ti, espero y sirva

Saludos

Tenia detalles, lo probé y funciono

let numeroSecreto = 5; let numeroUsuario = 0; let intentos = 1; let palabraVeces = 'vez';

while (numeroUsuario != numeroSecreto){ numeroUsuario = prompt("Escribe un número del 1 al 10, por favor:"); console.log(numeroUsuario); if (numeroUsuario == numeroSecreto){ alert(Acertaste, el número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${palabraVeces}); } else { if (numeroUsuario < numeroSecreto){ alert('El número secreto es mayor'); } else { alert('El número secreto es menor'); } intentos = intentos + 1; palabraVeces = "veces"; } }

Yo tengo un problema parecido intenta cambiar el contador

En lugar de intentos++;

Usa intentos+1;

Suerte

si usas ternarios para template string ${....} no olvides agregar las comillas invertidas encapsulando todo ( tu_código); y todo esta ok

alert(Acertaste, el número es: ${numeroUsuario}. Lo hiciste en ${intentos} ${palabraVeces});