Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Antoniio en 5 Mayo 2016, 03:38 am



Título: Manejo de hilos
Publicado por: Antoniio en 5 Mayo 2016, 03:38 am
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 !!


Título: Re: Manejo de hilos
Publicado por: + 1 Oculto(s) en 6 Mayo 2016, 16:24 pm
tu mismo lo dijiste tienes que crear por cada cuadrado un hilo


pero tambien se puede hacer sin hilos


Título: Re: Manejo de hilos
Publicado por: Antoniio en 6 Mayo 2016, 23:30 pm
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 @.@


Título: Re: Manejo de hilos
Publicado por: + 1 Oculto(s) en 7 Mayo 2016, 21:44 pm
puedes postear tu codigo asi podre ayudarte


Título: Re: Manejo de hilos
Publicado por: Antoniio en 7 Mayo 2016, 22:17 pm
Este es:

Código:
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);
        });
    }
}


Título: Re: Manejo de hilos
Publicado por: + 1 Oculto(s) en 7 Mayo 2016, 22:59 pm
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 


Título: Re: Manejo de hilos
Publicado por: Antoniio en 8 Mayo 2016, 08:38 am
Mmmm no comprendo la lógica :S


Título: Re: Manejo de hilos
Publicado por: Antoniio en 9 Mayo 2016, 17:45 pm
Bueno, ya lo he resuelto :P

Gracias ;D


Título: Re: Manejo de hilos
Publicado por: + 1 Oculto(s) en 9 Mayo 2016, 22:48 pm
no tuve mucho tiempo para poder ayudarte de la manera correcta


hiciste algo parecido a lo que te mencione?