Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Desafío - Logica de Programación

Buenas Noches Compañeros.

A continuacion adjunto el desarrollo del desafio propuesto, en este implemente la funcionalidad para que el usuario ingrese el valor minmo del rango y el valor maximo del rango, adicionalmente puede indicar el numero de intentos, para cada valor ingresado por el usuario se realiza una validacion de datos con la finalidad de que no se deje en blanco o se ingresen caracteres.

// Definimos Variables
let numeroSecreto = 0;
let numeroUsuario;
let intentos = 1;
let maxIntentos = 3;
let minimoRango  = 1;
let maximoRango = 10;

while(true){
    minimoRango = prompt('Ingrese el extremo Inferior del rango en el que quiere jugar.');
    if (minimoRango === ""){
        alert('Por favor ingrese un Numero');
    } else if (isNaN(Number(minimoRango))){
        alert('Ingrese solo Numeros Por favor');
    } else {
        minimoRango = parseInt(minimoRango);
        break;
    }
}

while(true){
    maximoRango = prompt('Ingrese el extremo Superior del rango en el que quiere jugar.');
    if (maximoRango === ""){
        alert('Por favor ingrese un Numero');
    } else if (isNaN(Number(maximoRango))){
        alert('Ingrese solo Numeros Por favor');
    } else {
        maximoRango = parseInt(maximoRango);
        break;
    }
}

numeroSecreto = Math.floor(Math.random()* (maximoRango - minimoRango + 1)) + minimoRango;

while(true){
    maxIntentos = prompt('Ingrese el numero de intentos que desea tener para hallar el numero secreto');
    if (maxIntentos === ""){
        alert('Por favor ingrese un Numero');
    } else if (isNaN(Number(maxIntentos))){
        alert('Ingrese solo Numeros Por favor');
    } else {
        maxIntentos = parseInt(maxIntentos);
        break;
    }
}

while (numeroUsuario !== numeroSecreto) {
    numeroUsuario = prompt(`Ingresa un numero entre ${minimoRango}  y ${maximoRango} por favor`);
    
    // Validacion de numeroUusario
    if (numeroUsuario === ""){
        alert('Por favor ingrese un numero');
        continue;
    } else if (isNaN(Number(numeroUsuario))){
        alert('Ingrese solo Numeros Por favor');
        continue;
    }
    numeroUsuario = parseInt(numeroUsuario);

    // Condicional if else para comparar el numero secreto con el numero ingresado por el usuario
    if (numeroUsuario === numeroSecreto) {
        alert(`Adivinaste el numero secreto!: ${numeroSecreto}\nLo lograste en ${intentos} ${intentos == 1 ? 'intento.': 'Intentos.'}`);
    } else  {   
        intentos++; 
        if (intentos > maxIntentos){
            alert(`Perdiste!, llegaste al numero maximo de intentos: ${maxIntentos}\nEl numero secreto es: ${numeroSecreto}`);
            break;
        }
        numeroUsuario > numeroSecreto ? alert('El numero secreto es menor') : alert('El numero secreto es mayor');
    }
}
2 respuestas

Posteriormente realicé una refactorizacion, de forma que la validacion la inserte en una funcion para luego poder llamarla. Adicionalmente agregue una validacion que me permita verificar si el valor maximo del rango es mayor al valor minimo.

// Definimos Variables
let numeroSecreto = 1;
let numeroUsuario = 0;
let intentos = 1;
let maxIntentos = 3;
let minimoRango  = 1;
let maximoRango = 10;

function Validacion(numero){
    if (numero === ""){
        alert('Por favor ingrese un Numero');
        return false;
    } else if (isNaN(Number(numero))){
        alert('Ingrese solo Numeros Por favor');
        return false;
    } else {
        return true;
    }
}
// Validacion numero minimo del rango
while(true){
    minimoRango = prompt('Ingrese el extremo Inferior del rango en el que quiere jugar.');
    if (Validacion(minimoRango)){
        minimoRango = parseInt(minimoRango);
        break;
    }
}

// Validacion numero maximo del rango y que sea mayor a minimoRango
while(true){
    maximoRango = prompt('Ingrese el extremo Superior del rango en el que quiere jugar.');
    if (Validacion(maximoRango)){
        if(maximoRango > minimoRango){
            maximoRango = parseInt(maximoRango);
            break;
        } else {
            alert(`el maximo debe ser mayor a ${minimoRango}`);
            continue;
        }
    }
}

// Se genera el numero aleatorio entre los rangos
numeroSecreto = Math.floor(Math.random()* (maximoRango - minimoRango + 1)) + minimoRango;

// Valida el numero de intentos del usuario
while(true){
    maxIntentos = prompt('Ingrese el numero de intentos que desea tener para hallar el numero secreto');
    if (Validacion(maxIntentos)){
        maxIntentos = parseInt(maxIntentos);
        break;
    }
}

//Valida  el numero ingresado por el susuario
while (numeroUsuario !== numeroSecreto) {
    numeroUsuario = prompt(`Ingresa un numero entre ${minimoRango}  y ${maximoRango} por favor`);
    
    // Validacion de numeroUsuario
    if (!Validacion(numeroUsuario)){
        numeroUsuario= parseInt(numeroUsuario);
        continue;
    }
    numeroUsuario = parseInt(numeroUsuario);

    // Condicional if else para comparar el numero secreto con el numero ingresado por el usuario
    if (numeroUsuario === numeroSecreto) {
        alert(`Adivinaste el numero secreto!: ${numeroSecreto}\nLo lograste en ${intentos} ${intentos == 1 ? 'intento.': 'Intentos.'}`);
    } else  {   
        intentos++; 
        if (intentos > maxIntentos){
            alert(`Perdiste!, llegaste al numero maximo de intentos: ${maxIntentos}\nEl numero secreto es: ${numeroSecreto}`);
            break;
        }
        numeroUsuario > numeroSecreto ? alert('El numero secreto es menor') : alert('El numero secreto es mayor');
    }
}

¡Hola Anderson!

Gracias por compartir tu código con nosotros. Recuerda que estamos aquí para ayudarte. Si necesitas ayuda, no dudes en buscarnos en el foro.

¡Gracias nuevamente!

Saludos,

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!