Autor Tema: Juego adivinar número Java Ejercicio Generar números aleatorios (CU00672B)  (Leído 5179 veces)

jupertivo

  • Sin experiencia
  • *
  • Mensajes: 29
  • Aprendiendo y más allá
    • Ver Perfil
Hola a tod@s. Aquí os dejo mi resolución del ejercicio propuesto. Acepto mejoras, críticas, etc. Estamos para aprender ;D.


Clase AdivinarUnNumero, con el 'main':

Código: [Seleccionar]
public class AdivinarUnNumero{
    public static void main(String[]Args){
        Integer miInteger=0;
        boolean continuar=false;
        EntradaDeTeclado entrada; //Creo un objeto 'EntradaDeTeclado'
        NumeroAleatorio numero=new NumeroAleatorio(); //Creo un objeto 'Numeroaleatorio'
        numero.generarNumeroAleatorio(); //Genero un numero aleatorio
        System.out.println("\nEmpieza el programa. Para salir en cualquier momento, pulse 'Return'");
        System.out.print("Se ha generado un número entero aleatorio entre 1 y 100, ambos incluidos. Intente adivinarlo: ");
        entrada=new EntradaDeTeclado(); //Pido datos por teclado
        continuar=entrada.getContinuar(); //Compruebo si se ha pulsado 'Return'
        while(continuar){ //Si no se ha pulsado 'Return', entro
            miInteger=miInteger.valueOf(entrada.getEntrada()); //El valor del 'String' de entrada, se convierte en objeto tipo Integer
            if((int)miInteger==numero.getNumeroAleatorio()){
                System.out.println("\n¡Enhorabuena!. Ha acertado.");
                continuar=false;} //Se ha acertado, por lo que el programa finaliza
            else if((int)miInteger<numero.getNumeroAleatorio()){   
                System.out.print("No ha acertado. El número introducido es menor que el buscado. Intente adivinarlo introduciendo otro: ");}
            else if((int)miInteger>numero.getNumeroAleatorio()){   
                System.out.print("No ha acertado. El número introducido es mayor que el buscado. Intente adivinarlo introduciendo otro: ");}   
            if(continuar){ //Evita que se entre si se ha acertado
                entrada=new EntradaDeTeclado(); //Pido datos por teclado
                continuar=entrada.getContinuar();}} //Compruebo si se ha pulsado 'Return'               
        System.out.println("\nFin del programa");}}


Clase Numeroaleatorio;

Código: [Seleccionar]
import java.util.Random;
public class NumeroAleatorio{//Esta clase genera un entero aleatoriamente entre 1 y 100
    int numeroAleatorio=0;
    public NumeroAleatorio(){numeroAleatorio=0;} //Constructor
    public void generarNumeroAleatorio(){
        Random num=new Random();
        while(numeroAleatorio==0){ //Evito que me genere el cero
            numeroAleatorio=num.nextInt(101);}}
    public int getNumeroAleatorio(){return numeroAleatorio;} }


Clase EntradaDeTeclado:

Código: [Seleccionar]
import java.util.Scanner;
public class EntradaDeTeclado{
    private String entradaTeclado;
    boolean continuar=true;
    public EntradaDeTeclado(){ //Constructor
        entradaTeclado="";
        pedirEntrada();} //Al crear un objeto, se ejecuta este método
    public void pedirEntrada(){
        Scanner entradaEscaner=new Scanner(System.in);
        entradaTeclado=entradaEscaner.nextLine();
        if (entradaTeclado.length()==0) {continuar=false;}} //Si pulso 'Return', finalizará el programa
    public boolean getContinuar(){return continuar;}
    public String getEntrada(){return entradaTeclado;}}


Saludos a todos los foreros. :)

« Última modificación: 24 de Abril 2015, 12:15 por César Krall »
Descubrir y enmendar los pequeños errores ayuda a no cometer los grandes

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Veo que has hecho una versión mejorada.... yo lo veo perfecto!!!

 :D
"Luchar por tus sueños y cumplirlos... eso es vivir.."

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Yo también, además está bien acostumbrarse a trabajar con distintas clases como en este caso NumeroAleatorio, EntradaDeTeclado, etc.

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

jupertivo

  • Sin experiencia
  • *
  • Mensajes: 29
  • Aprendiendo y más allá
    • Ver Perfil
Hola de nuevo. Gracias por vuestros comentarios. Me abrumáis y, encima, por partida doble. Un lujazo!!!  :D
Lo de mejorada, no sé. Adapté lo que estaba en la lección dada por el curso. Gracias.
Sí, intento hacerlo con clases distintas, para llamarlas después desde la clase 'main'. Creo que es la filosofía de Java. Además, se pueden reutilizar para otros programas. Por ejemplo, la clase entradaDeTeclado la utilizo siempre como entrada.

Gracias de nuevo. Sois fantásticos por vuestra atención, comentarios y por la calidad del curso. De verdad. Hasta el siguiente post.
Descubrir y enmendar los pequeños errores ayuda a no cometer los grandes

Dan_SB

  • Avanzado
  • ****
  • Mensajes: 273
  • *<DanielsCK>*
    • Ver Perfil
Esa filosofía la he adquirido yo... a mis inicios todo lo escribía en el main.. como prueba puedes verte este post mio anterior (cuando recién vine aquí):

https://www.aprenderaprogramar.com/foros/index.php?topic=2090.msg10282#msg10282

Compara ahora ese codigo con esto (aun le falta una mejora que dentro de poco voy a publicar por cierto..!  ;) ):

https://www.aprenderaprogramar.com/foros/index.php?topic=2286.msg10955#msg10955


Saludos!
"Luchar por tus sueños y cumplirlos... eso es vivir.."

 

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