G
Guest
Gast
Hallo zusammen. Ohne lang um den heissen Brei herum zu reden komme ich direkt zu meinem Problem. Ich moechte ein Minispiel programmieren bei dem sich ein unbemannter Helikopter durch einen Garten steuern lassen kann. Der Garten ist mit Radarposten ausgestattet. Die Radarposten werden allerdings nicht angezeigt. Hier mal zur Ubersicht das Klassendiagramm:
Das ganze basiert auf einem MVC-Pattern, sodass ich spaeter einfach neue Views hinzufuegen kann, etwa um die aktuelle Geschwindigkeit des Helikopters anzuzeigen.
Nun, ich hab keine Ahnung warum die Radarposten nicht gezeichnet werden.
hier mal der Source:
Das ganze basiert auf einem MVC-Pattern, sodass ich spaeter einfach neue Views hinzufuegen kann, etwa um die aktuelle Geschwindigkeit des Helikopters anzuzeigen.
Nun, ich hab keine Ahnung warum die Radarposten nicht gezeichnet werden.
hier mal der Source:
Code:
import javax.swing.JPanel;
import java.awt.BorderLayout;
public class Mainpanel extends JPanel
{
public Mainpanel()
{
setLayout(new BorderLayout());
GardenPanel gp = new GardenPanel(400, 300, 7);
GardenModel gm = new GardenModel(gp);
add(gp, BorderLayout.CENTER);
add(new ControllPanel(), BorderLayout.SOUTH);
}
}
Code:
import java.awt.Dimension;
import java.util.ArrayList;
import java.util.Observable;
public class GardenModel extends Observable
{
private ArrayList<Radarstation> radarList;
private int dx, dy;
private Dimension gardenSize;
public GardenModel(GardenPanel gp)
{
this.gardenSize = gp.getSize();
}
}
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.util.ArrayList;
import javax.swing.JPanel;
public class GardenPanel extends JPanel
{
private int x, y, aantalRadaren;
private ArrayList<Radarstation> radarList;
private Dimension gardenSize;
public GardenPanel(int x, int y, int aantalRadaren)
{
gardenSize = new Dimension(x, y);
this.aantalRadaren = aantalRadaren;
radarList = new ArrayList<Radarstation>();
setSize(x, y);
setVisible(true);
setBackground(Color.GREEN);
System.out.println("reached GardenPanel Constructor");
generateRadaren();
}
public void generateRadaren()
{
System.out.println("reached generateRadaren");
Dimension d = new Dimension();
Point p = new Point();
int x = (75 + ((int) Math.random() * 75));
int y = (75 + ((int) Math.random() * 75));
d.setSize(x, y);
if(radarList.isEmpty())
{
x = (int) (Math.random() * gardenSize.getWidth());
y = (int) (Math.random() * gardenSize.getHeight());
p.setLocation(x, y);
radarList.add(new Radarstation(p, d, Color.BLUE));
}
else if(!radarList.isEmpty());
{
for(int i = 0; i < aantalRadaren; i++)
{
Radarstation rs = radarList.get(i);
x = (int) (rs.getPosition().getX() + (Math.random() * 200));
y = (int) (rs.getPosition().getY() + (Math.random() * 100) - 50);
p.setLocation(x, y);
x = (75 + ((int) Math.random() * 75));
y = (75 + ((int) Math.random() * 75));
d.setSize(x, y);
Radarstation rsNew = new Radarstation(p, d, Color.BLUE);
radarList.add(rsNew);
System.out.println("Radar" + (i + 2) + "geadded");
}
}
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
for(Radarstation r: radarList)
{
r.paint(g);
}
}
public Dimension getSize()
{
return new Dimension(x, y);
}
}
Code:
import java.awt.Dimension;
import java.awt.Point;
import java.awt.Color;
import java.awt.Graphics;
public class Radarstation
{
private Point position;
private Dimension size;
private Color color;
public Radarstation(Point pos, Dimension size, Color color)
{
this.position = pos;
this.size = size;
this.color = color;
}
public Dimension getSize()
{
return size;
}
public Point getPosition()
{
return position;
}
public void setPosition(Point p)
{
position = p;
}
public void paint(Graphics g)
{
g.setColor(color);
System.out.println("posX: " + (int) position.getX() + " posY: "+ (int) position.getY() + " scaleX: " +
(int) size.getWidth() + " scaleY: " + (int) size.getHeight());
g.fillOval((int) position.getX(), (int) position.getY(), (int) size.getWidth(), (int) size.getHeight());
}
public void setSize(Dimension d)
{
size = d;
}
}