1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / [Java] Generar figuras geométricas aleatorias distinto tamaño y color rectángulo
« en: 07 de Agosto 2018, 01:06 »
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
Clase FrameYPanel
Clase Main..
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.
¿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.