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

Propuesta - Con 3 rangos (a 10, a 100 o a 1000)

Me gusta mucho como me quedo... lo puedo vender? jaja

Características Primera parte: Selección de rango

  • El jugador decide si quiere jugar de 1 a 10, o de 1 a 100 o de 1 a 1000
  • Si escoge de 1 a 10, tendrá 3 intentos.
  • Si escoge de 1 a 100 o de 1 a 1000 tendrá 10% de intentos
  • Si escoge un rango incorrecto, el programa se lo hará saber y lo pondrá a escoger de nuevo.

Segunda parte: Adivinando números

  • El jugador puede ingresar números dependiendo del rango que haya escogido.
  • Si ingresa un numero que esta fuera del rango que haya escogido en la primer parte, entonces el programa le hará saber de su error y lo pondrá a que vuelva a intentar ingresar sin perder la oportunidad.
  • Si adivina, el programa le hará saber que ya gano.
  • Si no adivina, el programa le hará saber si el numero secreto es mayor o menos.
  • Si no adivina, el programa también le hará saber cuantos intentos a agotado del total de intentos que tenia.
// Variables
let numeroSecreto;
let numeroUsuario;  // No le asigno 0 para evitar que conflicto cuando el numero secreto sea tambien 0
let rango;          //esta variable es para decidir si es de 1 a 10, 1 a 100 o 1 a 1000
let intentosEjecutados = 1;
let intentosDisponibles;

rango = prompt(`Bienvenido al juego.\n\nEscirbe 10, 100 o 1000 para escoger un rango de numeros en el juego:`);

// Nos aseguramos que el jugador haya escogido un rango de juego correcto
while (rango != 10 && rango != 100 && rango != 1000) {
    alert(`ERROR:\n\nHas escrito un numero incorrecto`);
    rango = prompt(`Intentemolo de nuevo.\n\nEscirbe 10, 100 o 1000 para escoger un rango de de numeros en el juego:`);
}

// Definimos cuantos intentos tendra el jugador dependiendo del rango escogido
numeroSecreto = Math.floor(Math.random()*rango)+1;
if (rango == 10) {
    intentosDisponibles = 3;
    
} else {
    intentosDisponibles = rango/10;
}

// El primer while tiene dos objetivos:
// Obejtivo 1: Ejecutarse solo cuando no se ha excedido el numero maximo de intentos
// Objetivo 2: Ejecutrase solo cuando todavia no se a acertado el numero secreto
while (numeroUsuario != numeroSecreto && intentosEjecutados < intentosDisponibles + 1) {
    console.log(rango, numeroSecreto, intentosDisponibles, intentosEjecutados);
    numeroUsuario = parseInt(prompt(`Indica un número entre 1 y ${rango} por favor:`));

    // Nos aseguramos que el numeroUsuario sea solo entre 1 y 10
    while (numeroUsuario < 1 || numeroUsuario > 100) {
        alert(`ERROR:\nTu numero debe ser entre 1 y ${rango} solamente`);
        numeroUsuario = prompt(`Intentemolo otra vez.\n\nIndica un número entre 1 y ${rango} por favor:`);
    }
    
    // Esta seccion de codigo realiza la compararacion de numeros
    if (numeroUsuario == numeroSecreto) {
        //cuando acertamos        
        alert(`FELICIDADES!\n\nAcertaste, el secretonumero es: ${numeroUsuario}.\n\nLo lograste en ${intentosEjecutados} ${intentosEjecutados == 1 ? 'intento' : 'intentos' }`);
        
    } else {
        //Cuando No acertamos y el numero secreto es Mayor
        if(numeroSecreto > numeroUsuario) {
            alert(
                `Lo siento, NO has acertado.\n\nEl numero secreto es mayor que ${numeroUsuario}.\n\nHas hecho ${intentosEjecutados} ${intentosEjecutados == 1 ? 'intento' : 'intentos' } de ${intentosDisponibles}`);            
        } else {
            //Cuando No acertamos y el numero secreto es Menor
            alert(`Lo siento, NO has acertado.\n\nEl numero secreto es menor que ${numeroUsuario}.\n\nHas hecho ${intentosEjecutados} ${intentosEjecutados == 1 ? 'intento' : 'intentos' } de ${intentosDisponibles}`);            
        }        
    }

    //Contador de numero de intentos
    //Esta rutina condicional se ejecuta solo No se ha acertado el numero
    //Avisa cuando ya se acabaron los intentos    
    intentosEjecutados ++ ;
    if (intentosEjecutados == intentosDisponibles + 1 && numeroUsuario != numeroSecreto) {
        alert(`Lo siento!\n\nYa no tienes mas intentos disponibles`);
        break;
    }
}
4 respuestas

Dejo aqui tambien el codigo sin comentarios para por si a alguien le sirve mejor asi

let numeroSecreto;
let numeroUsuario;
let rango;
let intentosEjecutados = 1;
let intentosDisponibles;

rango = prompt(`Bienvenido al juego.\n\nEscirbe 10, 100 o 1000 para escoger un rango de numeros en el juego:`);

while (rango != 10 && rango != 100 && rango != 1000) {
    alert(`ERROR:\n\nHas escrito un numero incorrecto`);
    rango = prompt(`Intentemolo de nuevo.\n\nEscirbe 10, 100 o 1000 para escoger un rango de de numeros en el juego:`);
}

numeroSecreto = Math.floor(Math.random()*rango)+1;
if (rango == 10) {
    intentosDisponibles = 3;
    
} else {
    intentosDisponibles = rango/10;
}

while (numeroUsuario != numeroSecreto && intentosEjecutados < intentosDisponibles + 1) {
    console.log(rango, numeroSecreto, intentosDisponibles, intentosEjecutados);
    numeroUsuario = parseInt(prompt(`Indica un número entre 1 y ${rango} por favor:`));

    while (numeroUsuario < 1 || numeroUsuario > 100) {
        alert(`ERROR:\nTu numero debe ser entre 1 y ${rango} solamente`);
        numeroUsuario = prompt(`Intentemolo otra vez.\n\nIndica un número entre 1 y ${rango} por favor:`);
    }
    
    if (numeroUsuario == numeroSecreto) {
        alert(`FELICIDADES!\n\nAcertaste, el secretonumero es: ${numeroUsuario}.\n\nLo lograste en ${intentosEjecutados} ${intentosEjecutados == 1 ? 'intento' : 'intentos' }`);
        
    } else {
        if(numeroSecreto > numeroUsuario) {
            alert(
                `Lo siento, NO has acertado.\n\nEl numero secreto es mayor que ${numeroUsuario}.\n\nHas hecho ${intentosEjecutados} ${intentosEjecutados == 1 ? 'intento' : 'intentos' } de ${intentosDisponibles}`);            
        } else {
            alert(`Lo siento, NO has acertado.\n\nEl numero secreto es menor que ${numeroUsuario}.\n\nHas hecho ${intentosEjecutados} ${intentosEjecutados == 1 ? 'intento' : 'intentos' } de ${intentosDisponibles}`);            
        }        
    }

    intentosEjecutados ++ ;
    if (intentosEjecutados == intentosDisponibles + 1 && numeroUsuario != numeroSecreto) {
        alert(`Lo siento!\n\nYa no tienes mas intentos disponibles`);
        break;
    }
}
solución!

Ten en cuenta que la variable rango debería ser convertida a un número después de ser capturada del usuario, el código quedaría algo así:

rango = parseInt(prompt(Bienvenido al juego.\n\nEscoge 10, 100 o 1000 para definir el rango de números en el juego:));

while (rango !== 10 && rango !== 100 && rango !== 1000) { alert(ERROR:\nHas ingresado un número incorrecto); rango = parseInt(prompt(Intentémoslo de nuevo.\n\nEscoge 10, 100 o 1000 para definir el rango de números en el juego:)); }

Excelente. Gracias Jose Fabricio Pro Valdivia por la observacion

Woo, te quedo exceelente, me cuesta comprender varias cosas aun, muchas felicidades