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

[Duda] Cantidad de intentos en Código

Hola!

Presenté una situación en mi código cuando se daba el ejemplo de que existiera un break en la cantidad de intentos máximos.

En la sección en la que el máximo de intentos fuera 3 y que existiera el break con el mensaje de alerta que se había llegado al máximo, ese mensaje sale también si el usuario le atina al número secreto en el tercer intento.

¿Cómo se puede modificar para que si le atina al número en el tercer intento no le salga ese mensaje? ¿Mediante un "if" y "else"?

Agradezco desde ya las respuestas!

6 respuestas

Hola María Renee! Si puedas pasar el código podría asesorarte mejor, pero creo que el problema puede ser que tengas el aumento en tu contador de intentos antes de la verificación de si atinó al número. Tendrías que controlar eso primero y en caso de que le atine puedes agregar el break para cortar el ciclo antes.

Hola Rodrigo, muchas gracias por tu respuesta! A como entiendo el código lo puse antes, pero soy nueva en esto así que si pudieras indicarme dónde esta mi error, lo agradecería muchísimo.

Te envío el código que he ido trabajando con los videos:

//Código Java

let numeroSecreto = 6;
let numeroUsuario = 0; 
let intentos = 1; 
let maximoDeIntentos = 3;
while(numeroUsuario != numeroSecreto) {
numeroUsuario = prompt("Me indicas un numero por favor entre 1 y 10:");
console.log(numeroUsuario);
if (numeroUsuario == numeroSecreto) {
    alert(`Acertaste el numero es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? 'vez' : 'veces'}`); 
} else {
    alert("Lo siento, no acertaste el numero");
}

if (numeroUsuario > numeroSecreto)
{
    alert(" El numero secreto es menor");
} else if(numeroUsuario < numeroSecreto)
{
    alert("El numero secreto es mayor");
} else {
    alert("Juego terminado");
}

intentos ++; 
if (intentos > maximoDeIntentos) {
alert(`Llegaste al número máximo de ${maximoDeIntentos} intentos`);
}
}
solución!

/// Hola Maria, realice algunas modificaciones a tu codigo para que no te sucediera el error con los if agregando 2 break, y anexando un comentario del ////como funcionan en el codigo, si tienes alguna duda te respondo y espero a ver ayudado. let numeroSecreto = 6; let numeroUsuario = 0; let intentos = 1; let maximoDeIntentos = 3;

while(numeroUsuario != numeroSecreto) { numeroUsuario = prompt("Me indicas un numero por favor entre 1 y 10:"); console.log(numeroUsuario); if (numeroUsuario == numeroSecreto) { alert(Acertaste el numero es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? 'vez' : 'veces'}); break;/////El break se coloca aqui ya que una vez acertado el numero se necesita salir del ciclo y reiniciar el juego. } else { alert("Lo siento, no acertaste el numero"); }

if (numeroUsuario > numeroSecreto)
{
    alert(" El numero secreto es menor");

} else if(numeroUsuario < numeroSecreto)
{
    alert("El numero secreto es mayor");
} else {
    alert("Juego terminado");
    

    
}
intentos ++; 
if (intentos > maximoDeIntentos) {
alert(`Llegaste al número máximo de ${maximoDeIntentos} intentos`);
break;////////////Para terminar el juego y no seguir sumando intentos .
}

}

Concuerdo con Raúl, el código está perfecto salvo que faltaron esos breaks, uno cuando el jugador acierta el numero dentro del primer if para que ya corte el juego y otro al alcanzar el número máximo de intentos en el if final.

Tu error esta en que te falta agregar dos breack para terminar el ciclo, uno es cuando ganas y el otro es cuando alcanzas el máximo de intentos, asi una vez que ganas terminas el ciclo y los mensajes posteriores no se mostraran, lo mismo para cuando alcanzas el máximo de intentos. En las correcciones agregue comentarios de lo que se hizo, espero te sirvan.


let numeroSecreto = 6;
let numeroUsuario = 0; 
let intentos = 1; 
let maximoDeIntentos = 3;

while(numeroUsuario != numeroSecreto) {
    numeroUsuario = prompt("Me indicas un numero por favor entre 1 y 10:");
    console.log(numeroUsuario);
    if (numeroUsuario == numeroSecreto) {
        alert(`Acertaste el numero es: ${numeroUsuario}. Lo hiciste en ${intentos} ${intentos == 1 ? 'vez' : 'veces'}`); 
        break; //se añadio esto para terminar el ciclo y deje de mostrar los  mensajes posteriores
    } else {
        alert("Lo siento, no acertaste el numero");
    }

    if (numeroUsuario > numeroSecreto)
    {
        alert(" El numero secreto es menor");
    } else //if(numeroUsuario < numeroSecreto) esto tambien es inesesaio ya que si el numero secreto es menor por descarte solo puede ser mayor
    {
        alert("El numero secreto es mayor");
    }
    /* esta parte del código es innecesaria, a menos que quieras que lance ese mensaje una vez que gano pon el alert en la condición cuando acierta si no nunca entrara aquí
     else {
        alert("Juego terminado");
    }*/

    intentos ++; 
    if (intentos > maximoDeIntentos) {
        alert(`Llegaste al número máximo de ${maximoDeIntentos} intentos`);
        breack; //aquí también se añadió esto para terminar el ciclo cuando los intentos alcancen el máximo
    }
}

Muchas gracias a todos por toda su ayuda y sus comentarios!