2011-11-20, 19:57
  #1
Medlem
Hellooo!

Jobbar med en ganska enkel uppgift där jag ska skapa ett program som ritar ut ett antal rektanglar och ovaler. Rektanglarna och ovalernas storlek och position ska generas slumpmässigt.

Men jag har ett problem, min kod ritar bara ut EN rektangel eller oval och jag tror det har något med överlappning att göra. Så jag behöver hjälp med att hitta mitt fel.




RandomShape

Kod:
import java.awt.*;
import javax.swing.*;
import java.lang.*;

public class RandomShape extends JFrame {
	private int n; //Instansvariabel
	public RandomShape() {}
	public RandomShape(int antal) {
		n = antal;
		for(int i=1; i<n; i++)
			add(generateRandomShape());
		setBackground(Color.white);
		setVisible(true);
		setSize(500,500);
		setDefaultCloseOperation(EXIT_ON_CLOSE);


	}

	public Component generateRandomShape() {
		double r1 = (int)(2*Math.random());
		if		(r1 == 0)
			return new RandomRect();
		else if (r1 == 1)
			return new RandomOval();
		else
			return null;
	}



	public static void main (String[] arg) {
		RandomShape r = new RandomShape(100);
	}
}

RandomRect

Kod:
import java.awt.*;
import java.util.*;
import javax.swing.*;

public class RandomRect extends JPanel {
	private int width, height;
	public RandomRect() {
		width  = randomPixel();
		height = randomPixel();
		setPreferredSize(new Dimension(width, height));
		setOpaque(false);

	}

	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.red);
		g.fillRect(randomPixel(),randomPixel(), width, height);
	}

	private int randomPixel() {
		int pix = (int)(Math.random()*400);
		return pix;
	}
}

RandomOval

Kod:
import java.awt.*;
import java.util.*;
import javax.swing.*;

public class RandomOval extends JPanel {
	private int width, height;
	public RandomOval() {
		width  = randomPixel();
		height = randomPixel();
		setPreferredSize(new Dimension(width, height));
		setOpaque(false);

	}

	@Override
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.green);
		g.fillOval(randomPixel(),randomPixel(), width, height);
	}

	private int randomPixel() {
		int pix = (int)(Math.random()*400);
		return pix;
	}
}

Är tacksam för all hjälp!!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in