Hola, buenas. Estoy intentanto hacer una versión de la "Alfombra de Sierpinski":
https://es.wikipedia.org/wiki/Alfombra_de_Sierpinski (https://es.wikipedia.org/wiki/Alfombra_de_Sierpinski)
El problema es que se me solicita que el programa maneje un hilo para cada cuadrado que se va a rellenar. Así, cuando se deban rellenar sub-cuadrados, se deben crear nuevos hilos.
Cuál es la manera de hacer eso??, espero alguien pueda responder, dejo el programa aquí abajo.
https://mega.nz/#!aVhDkISI!oMxyyf_qaqi_3QE8pHrpdo8hnof1Wy8rX15g2Zbc6e8 (https://mega.nz/#!aVhDkISI!oMxyyf_qaqi_3QE8pHrpdo8hnof1Wy8rX15g2Zbc6e8)
Saludos !!
tu mismo lo dijiste tienes que crear por cada cuadrado un hilo
pero tambien se puede hacer sin hilos
Ese es el problema, no fui la última semana de clase y no tengo idea de cómo trabajar con hilos, investigué en internet pero no puedo hacer que funcione usando hilos para cada cuadrado @.@
puedes postear tu codigo asi podre ayudarte
Este es:
import java.awt.*;import java.awt.event.ActionEvent;
import javax.swing.*;
public class SierpinskiCarpet extends JPanel {
private final int dim = 513;
private final int margin = 20;
private int limit = dim;
public SierpinskiCarpet() {
setPreferredSize(new Dimension(dim + 2 * margin, dim + 2 * margin));
setBackground(Color.white);
setForeground(Color.black);
new Timer(2000, (ActionEvent e) -> {
limit /= 3;
if (limit <= 3)
limit = dim;
repaint();
}).start();
}
void drawCarpet(Graphics2D g, int x, int y, int size) {
if (size < limit)
return;
size /= 3;
for (int i = 0; i < 9; i++) {
if (i == 4) {
g.fillRect(x + size, y + size, size, size);
} else {
drawCarpet(g, x + (i % 3) * size, y + (i / 3) * size, size);
}
}
}
@Override
public void paintComponent(Graphics gg) {
super.paintComponent(gg);
Graphics2D g = (Graphics2D) gg;
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.translate(margin, margin);
drawCarpet(g, 0, 0, dim);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Alfombra de Sierpinski");
f.setResizable(false);
f.add(new SierpinskiCarpet(), BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
});
}
}
lo que deberias hacer es:
1.- crear una clase cuadrado
2.- en un metodo con un for crear varios objetos de esa clase cuadrado y almacenarlos en un arreglo
3.- dar start a todos los objetos del arreglo para que empieces a moverse o rellanarse lo que tu quieras...
saludos
Mmmm no comprendo la lógica :S
Bueno, ya lo he resuelto :P
Gracias ;D
no tuve mucho tiempo para poder ayudarte de la manera correcta
hiciste algo parecido a lo que te mencione?