Witam. Próbuje rozwiązać takowe zadanie:
Napisać program dzielący rekurencyjnie prostokąt na coraz mniejsze prostokąty. W pole tekstowe wprowadzamy na ile prostokątów dzielimy duży prostokąt. Aż do osiągnięcia przez podprostokąty szerokości 3 pikseli.
Czy miałby ktoś jakąś rade jak się za ten program zabrać bądź udzielić jakiejś podpowiedzi ?
0
0
Samo rysowanie powinno być zaimplementowane za pomocą klasy Graphics lub Graphics2D (ale nie ma to w tym przypadku wielkiego znaczenia). Uzyskuje się ją np. tak:
Graphics graphics = mojPanelDoRysowaniaProstokatow.getGraphics();
//sama funkcja powinna wywoływać samą siebie, tzn:
void funkcjaRysujaca(int wysokosc, int szerokosc) {
//tutaj kod odpowiedzialny za rysowanie prostokata
funkcjaRysujaca(wysokosc /2 , szerokosc /2);
}
0
Masz przykładowy kod
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Rectangles extends JFrame
{
int width = 0;
int height = 0;
public static void main(String[] args)
{
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Rectangles().setVisible(true);
}
});
}
public Rectangles()
{
add(new Panel(),BorderLayout.CENTER);
JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
JButton start = new JButton("Rysowanie");
start.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
width = 300;
height = 200;
repaint();
}
});
panel.add(start);
add(panel,BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
class Panel extends JPanel
{
public Panel()
{
setPreferredSize(new Dimension(600,400));
setBackground(Color.WHITE);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
drawRectangles(g,150,100,width,height);
}
private void drawRectangles(Graphics g, int x, int y, int w, int h)
{
if(h >= 3)
{
g.drawRect(x,y,w,h);
drawRectangles(g,x,y,w/2,h/2);
drawRectangles(g,x+w/2,y,w/2,h/2);
drawRectangles(g,x,y+h/2,w/2,h/2);
drawRectangles(g,x+w/2,y+h/2,w/2,h/2);
}
}
}
}