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.
}