1
respuesta

[Proyecto] Segunda actividad, El adivina numero elegante!

Pues comparto mi código sobre el ejercicio de adivinar el numero. Comentarios y que añades o cambiar, pls... I'll Like it :3

//Juego de adivinar numero  - Joshua Cástan

let puntos = 0;
//Puntuaje inicial

let numeroSecreto = 9;
//se declara un numero por default para numeroSecreto

let minSecreto = 1;
let maxSecreto = 10;
//se declaran los minimos y los maximos por default

let IndexPoints = 2 * maxSecreto;
//Indice de puntuje para escalar

let LoopInOn = true;
//Basicamente un boton de ensendido, se utilizara para que mientras este en true seguira el juego. basicamente algo con que pararlo si quiero.

let respuestaDelUsuario = "null";
//Basicamente un repositorio basio de respueta, para evitar declararlo dentro del WHILE

let nombre = prompt("¡Bienvenido a este juegito de adivinar el numero!\n Para empezar, cual es tu nombre?");

let diaDeSemana = prompt(`Fantastico ${nombre}! \nMe gustaria saber que dia es hoy. \nSabado, Domingo?`);
let finDeSemana = "¡Buena Semana!";

if (diaDeSemana == "Sabado" || diaDeSemana == "sabado" || diaDeSemana == "Domingo" || diaDeSemana == "domingo") {
    finDeSemana = "!Buen fin de semana!";
}

function clamp(valor, minimo, maximo) {
    return Math.min(Math.max(valor, minimo), maximo);
}
//Clamp es un limitador donde "valor" es el elemento a analizar y limita su repuesta como limite en "mínimo" y "máximo"

function NumeroSecretoInRange(min,max) {
    let numeroSecretotemp = Math.random() * (max - min) + min;
    //Esta funcion crea un numero aleatorio dentro del rango de numero que otorgemos en min y max, solo que es rudimentario.
    return clamp(Math.round(numeroSecretotemp), minSecreto, maxSecreto)
}
//Se crea esta funcion para poder hacer un loop con nuevos números secretos con la limitación de respuesta en el rango establecido en minSecreto y maxSecreto

function Manor(valorIN, valorReach) {
    if (valorIN >= valorReach) {
        return true;
    } else {
        return false;
    }
}
//Basicamente comprueba valorIN si es mayor o menor, lo escribo en funcion para no atosigar el codigo

numeroSecreto = NumeroSecretoInRange(minSecreto,maxSecreto);
//Se declara un numero aleatorio como respuesta correcta entre el 1 y el 10 por default para iniciar


alert(`${finDeSemana} \n ${nombre}  ¿¡Estas listo para la adivinanza!?`)
//Una simple bienvenida


//Se inicia el loop del juego
while (LoopInOn == true) {
    respuestaDelUsuario = prompt(`Adivina el numero entre el ${minSecreto} y el ${maxSecreto}`);
    //Se pregunta al usuario su respuesta
    while (isNaN(respuestaDelUsuario) == true) {
        //Respuesta es un texto, no un numero, se vuelve a preguntar
        alert("¡Ese no es un numero!");
        respuestaDelUsuario = prompt(`Ese no era un numero\nAdivina el numero entre el ${minSecreto} y el ${maxSecreto}`);
    }



    if (respuestaDelUsuario == numeroSecreto && isNaN(respuestaDelUsuario) == false) {
        //Se comprueba que la repuesta del usuario sea un numero y que su respuesta sea correcta.
        puntos = puntos + IndexPoints;
        //Se suma los puntos
        alert(`Exacto!\n El numero es : ${numeroSecreto} \n Tienes ${puntos} puntitos en tu saldo!`)
        //Se muestra tu puntuaje y un mensaje de exito.
        numeroSecreto = NumeroSecretoInRange(minSecreto,maxSecreto);
        //Se vuelve a declarar un numero aleatorio para una nueva ronda
    } else {

            if (Manor(respuestaDelUsuario, numeroSecreto)) {
                alert(`El numero ${respuestaDelUsuario} es demaciado grande, itenta algo mas pequeño.\n Intentalo Nuevamente para ganar!`);
            } else {
                alert(`El numero ${respuestaDelUsuario} es muy pequeño, intenta algo mas grande.\n Intentalo Nuevamente para ganar!`);
            }
            //Usa la función Manor creada anteriormente para definir si estas lejos y si el numero del usuario es mayor o menor, es una forma de guiarlo o darle pistas
    }
    

    if (respuestaDelUsuario == -1 && isNaN(respuestaDelUsuario) == false) {
            LoopInOn = false;
    }
    //Si se escribe el valor -1 se cierra el loop

    if (respuestaDelUsuario == -2 && isNaN(respuestaDelUsuario) == false) {
        maxSecreto = prompt(`Establece un nuevo valor maximo. \nActual: ${maxSecreto}\n      Coloca un valor nuevo:`)
        numeroSecreto = NumeroSecretoInRange(minSecreto,maxSecreto);
        IndexPoints = 5 * maxSecreto;
    }
    /*
    Se activa si se escribe -2
    Este es un controlador para poder modificar el cambio del valor máximo de la adivinanza,
     a su vez actualiza la cantidad de puntos que se te dan, entre mas numero mas dificil, por lo tanto mayor puntuaje obtendrás
     */

     if (puntos >= 100) {
        LoopInOn = false;
        alert("¿Felicidades, has ganado!")
     }
     //El reto decía que mayor a 100, se acaba, pues eso hace esto.


}
1 respuesta

¡Estimado estudiante!

Apreciamos tu participación en el foro. Queremos recordarte que este espacio está pensado principalmente para aclarar dudas y hacer preguntas. No es necesario compartir cada actividad.

¡Gracias por tu comprensión y por contribuir y hacer del foro un lugar enfocado en el intercambio útil y constructivo! Si prefieres puedes compartir comentarios sobre el contenido en Discord, te invitamos a unirte a nuestra comunidad en Discord.

Saludos