Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Desafío: juego de adivinación


import java.util.Random;
import java.util.Scanner;

public class SecretNumber {
    public static void main(String[] args) {
        System.out.println("Bienvenido/a a este juego de adivinanzas");

        Scanner scanner = new Scanner(System.in);
        Random random = new Random();

        int secretNumber = random.nextInt(101);
        int attempts = 1;
        int maxAttempts = 5;

        while (attempts <= maxAttempts) {
            System.out.println("-------------------------------------------");
            System.out.printf("Intento número %d de %d\n", attempts, maxAttempts);
            System.out.println("Ingresa un número entre 0 y 100:");

            int inputNumber = scanner.nextInt();

            if (inputNumber < 0 || inputNumber > 100) {
                System.out.println("Número inválido");
                break;
            }

            if (inputNumber == secretNumber) {
                System.out.println("¡Felicidades, acertaste el número!");
                break;
            }

            if (attempts != maxAttempts) {
                if (secretNumber > inputNumber) {
                    System.out.println("¡El número secreto es mayor!");
                } else {
                    System.out.println("¡El número secreto es menor!");
                }
            } else {
                System.out.printf("Has perdido, el número secreto era: %d", secretNumber);
            }

            attempts++;
        }

        scanner.close();
    }
}
1 respuesta

¡Hola Esteban, espero que estés bien!

Tu código para el juego de adivinación se ve bastante bien estructurado. Parece que has seguido correctamente las instrucciones del desafío. Sin embargo, hay un pequeño detalle que podrías ajustar para mejorar la experiencia del usuario.

Actualmente, si el usuario ingresa un número fuera del rango de 0 a 100, el programa termina inmediatamente debido al break; dentro del condicional que verifica si el número es inválido. En lugar de terminar el juego, podrías simplemente notificar al usuario que el número es inválido y permitirle intentarlo de nuevo sin contar ese intento como fallido. Aquí te muestro cómo podrías hacerlo:

if (inputNumber < 0 || inputNumber > 100) {
    System.out.println("Número inválido. Por favor, ingresa un número entre 0 y 100.");
    continue; // Esto permite que el usuario intente de nuevo sin perder un intento.
}

Al utilizar continue; en lugar de break;, el bucle continuará y permitirá al usuario ingresar otro número sin incrementar el contador de intentos.

Espero que esta sugerencia te sea útil. ¡Espero haber ayudado y buenos estudios!