Autor Tema: [Java] Generar figuras geométricas aleatorias distinto tamaño y color rectángulo  (Leído 5171 veces)

Toshirou

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola, quisiera crear un programa que genere figuras (rectangulos, circulos, etc) de forma aleatoria, así mismo los colores y tamaño de forma aleatoria.. Todo eso usando POO (Herencia, Polimorfismo, etc). Con respecto a este tema, entiendo bien el concepto y demás.. pero no se me ocurre como hacerlo, que clases crear, etc.

¿Me podrían dar ideas y si es posible algo de código para entender por favor...? Yo he logrado hacer el programa pero de forma fea y muy básica creo.. por si acaso les dejo mi código:

Clase RandomShape

Código: [Seleccionar]
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;

public class RandomShape {

    public static Rectangle2D randomRect(){
        int x = (int) (Math.random() * 800) + 1;
        int y = (int) (Math.random() * 800) + 1;
        int width = (int) (Math.random() * 800) + 1;
        int height = (int) (Math.random() * 800) + 1;


        return new Rectangle2D.Double(x, y, width, height);

    }

    public static Ellipse2D randomEllip(){
        int x = (int) (Math.random() * 800) + 1;
        int y = (int) (Math.random() * 800) + 1;
        int width = (int) (Math.random() * 800) + 1;
        int height = (int) (Math.random() * 800) + 1;


        return new Ellipse2D.Double(x, y, width, height);
    }
   
}


Clase FrameYPanel

Código: [Seleccionar]
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
import java.util.*;
import java.util.List;

public class MyFrame extends JFrame {

    MyFrame(){
        this.setSize(800, 800);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);

        this.add(new MyPanel());
    }
}


class MyPanel extends JPanel{

    private List<Rectangle2D> rect;
    private List<Ellipse2D> ellip;

    MyPanel(){
        this.setBackground(Color.GRAY);

        rect = new ArrayList<>();
        ellip = new ArrayList<>();

        for(int i=0; i<10; i++){
            rect.add(RandomShape.randomRect());
            ellip.add(RandomShape.randomEllip());
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;

        for(Rectangle2D rectangles : rect){
            g2.setPaint(new Color((int) (Math.random()*255),(int) (Math.random()*255),(int) (Math.random()*255)));

            g2.fill(rectangles);
        }

        for(Ellipse2D ellipses : ellip){
            g2.setPaint(new Color((int) (Math.random()*255),(int) (Math.random()*255),(int) (Math.random()*255)));

            g2.fill(ellipses);
        }
       
    }
}


Clase Main..

Código: [Seleccionar]
package FigurasAleatorias;

public class Main {

    public static void main(String[] args) {
        new MyFrame().setVisible(true);
    }

}

Como ven yo lo hago con cierta cantidad de figuras y pues quisiera hacer algo mas automatico, que en cada ejecucion se haga cierta cantidad de figuras con distintos colores, tamaños (que no pase del tamaño de la ventana) y demás... quiero poner en práctica POO, que de verdad me falta mucho eso.
« Última modificación: 21 de Febrero 2019, 20:00 por Ogramar »

Jeffer

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Re:[Java] Generar figuras aleatorias con distinto tamaño y color
« Respuesta #1 en: 10 de Agosto 2018, 20:50 »
Hola amigo, cómo estás? Con respecto a tu pregunta, te aconsejo, primero que todo, que crees una clase abstracta que la puedes nombrar como "Figura", la cual vendría a tener como atributos la posición en X y en Y, el color, el ancho y el alto, y un único método llamado "dibujar" que vendría siendo abstracto también.
Luego, pasarías a crear las clases que representarían cada figura geométrica que existe, por ejemplo, crearías las clases "Rectángulo", "Círculo", etc., todas estas clases pasarían a heredar de la clase abstracta "Figura", por lo tanto, cada una tendría que implementar el método abstracto "dibujar".
Esa sería una idea rápida que te puedo dar, si no entiendes algo, me avisas!!
Estaré atento...

 

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