Manejo de hilos

Iniciado por Antoniio, 5 Mayo 2016, 03:38 AM

0 Miembros y 1 Visitante están viendo este tema.

Antoniio

Hola, buenas. Estoy intentanto hacer una versión de la "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

Saludos !!

+ 1 Oculto(s)

tu mismo lo dijiste tienes que crear por cada cuadrado un hilo


pero tambien se puede hacer sin hilos

Antoniio

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

+ 1 Oculto(s)

puedes postear tu codigo asi podre ayudarte

Antoniio

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);
        });
    }
}

+ 1 Oculto(s)

#5
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 

Antoniio

Mmmm no comprendo la lógica :S

Antoniio

Bueno, ya lo he resuelto :P

Gracias ;D

+ 1 Oculto(s)

no tuve mucho tiempo para poder ayudarte de la manera correcta


hiciste algo parecido a lo que te mencione?