Autor Tema: Java crear un juego básico Ejercicios Generar numeros aleatorios CU00672B  (Leído 2619 veces)

SantiagoArg

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Ejercicio CU00672B del tutorial básico de programación Java desde cero

Consigna:
Citar
Crea un programa Java que permita “jugar a adivinar un número” como se expone a continuación. El programa debe iniciarse indicando “Se ha generado un número aletatorio entero entre 1 y 100, intente adivinarlo”. El usuario introducirá un número y si el número aleatorio generado por el ordenador es menor deberá indicarse “No has acertado: el número es menor. Prueba otra vez”. Si el usuario introduce un número menor que el número aleatorio deberá indicarse “No has acertado: el número es mayor”. El programa terminará cuando el usuario introduzca el número aleatorio que había escogido el ordenador.

En este ejercicio cree la Clase Juego para tratar de no llenar demasiado la Clase principal (main) de todas formas no se si logre algo.
Al final el objeto juego solo quedo como lo que realmente es un generador de numeros, para obtenerlos y setearlos.
Lo bueno es que "al parecer" cumple con la consigna. Pero mejor eso se lo dejo a los que saben  8)

Clase EntradaTeclado
Código: [Seleccionar]
import java.util.Scanner; // Clase para poder manejar el ingreso de datos por el teclado

public class EntradaTeclado
{
    private String entrada; // Atributo
    public EntradaTeclado(){entrada = "";} // constructor vacio
    public String getDato(){return entrada;} // getter
    public void ingresoDato() // Creo un obj Scanner, utilizo su metodo para leer la linea ingresada
                              // y la guardo en el atributo
    {
        Scanner sc = new Scanner(System.in);
        entrada = sc.nextLine();
    }
}

Clase Juego
Código: [Seleccionar]
import java.util.Random;

public class Juego
{
    private String numeroElegido;
    private Integer numeroAleatorio;
   
    public Juego()
    {
        numeroElegido = "";
        numeroAleatorio = 0;
    }
   
    public void generarRandom()
    {
    Random objRandom;
    objRandom = new Random();
    numeroAleatorio = objRandom.nextInt(101);
    }
   
    public Integer getNumeroGenerado(){return numeroAleatorio;}
   
    public void setNumeroElegido(String elNumero)
    {
        numeroElegido = elNumero;
    }
    public Integer getNumeroElegido()
    {
        Integer tmpInteger = 0;
        return tmpInteger = tmpInteger.valueOf(numeroElegido);
    }
   
}

Clase TestJuego
Código: [Seleccionar]
public class TestJuego
{
    public static void main(String[] args)
    {
        EntradaTeclado entrada = new EntradaTeclado();
        Juego miJuego = new Juego();
        miJuego.generarRandom();
        System.out.println("Jugar a adivinar un numero\nintroduzca un numero entre el 0 y 100");
        entrada.ingresoDato();
           
        while( !entrada.getDato().equals(miJuego.getNumeroGenerado()))
        {
            if(Integer.valueOf(entrada.getDato()) < miJuego.getNumeroGenerado())
            {
                System.out.println("No has adivinado\nUna pista: Tu numero es menor que el numero a encontrar");
                System.out.println("volve a intentarlo");
                entrada.ingresoDato();
            }
            else if(Integer.valueOf(entrada.getDato()) > miJuego.getNumeroGenerado())
            {
                System.out.println("No has adivinado\nUna pista: Tu numero es mayor que el numero a encontrar");
                System.out.println("volve a intentarlo");
                entrada.ingresoDato();
            }
            else
            {
                System.out.println("Felicidades, has acertado el numero, el cual era:" + miJuego.getNumeroGenerado());
                break;
            }
        }
        System.out.println("El programa ha finalizado");
    }
}

Saludos!!
« Última modificación: 02 de Abril 2016, 18:19 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola Santiago! Veo buenas ideas en el ejercicio, pero te has complicado un poco.

En la clase Juego has declarado dos atributos:

    private String numeroElegido;
    private Integer numeroAleatorio;

Realmente el String parece que sobra. ¿Realmente sirve para algo tener el atributo String?

Otro detalle: has puesto un break dentro de un bucle while, esto en general no debe hacerse. Puedes leer sobre esto en https://www.aprenderaprogramar.com/foros/index.php?topic=4096.0

Por otro lado las conversiones Integer.valueOf(entrada.getDato()) podrías habértelas ahorrado si en lugar de nextLine() hubieras usado nextInt, mírate cómo está hecho en este ejercicio: https://www.aprenderaprogramar.com/foros/index.php?topic=2277.0

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

SantiagoArg

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola, Cesar!!

Si!!! es muy cierto lo que decis, en un momento trate de abstraerme totalmente de lo que iba a ser la clase principal, para poder crear solo una clase de "juego"
con respecto a lo del String sobrante, si, cuando lo declare, lo miraba y tenia mis dudas
y a lo largo del desarrollo me pregunte. "para que lo declaré asi!!!??" pero lo deje para poder jugar un poco con el valueOf, a ver si daba resultado y estaba entendiendolo bien.
De todas formas si, esta mal que lo haya implementado de esa manera.
y con respecto a utilizar un metodo en lugar del otro, estoy feliz en decir que ahora gracias a las lecturas de los capitulos anteriores le presto mucha atencion al API y trato de ver que métodos tiene las clases, mas alla del dado en cada capitulo.

Muchas gracias por revisar el codigo y las devoluciones!!!

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".