Hallo!
Ich möchte ein Geographie Spiel programmieren. Dabei möchte ich die einzelnen Länder auf der Karte einfärben.
Ich muss jetzt für jedes Land die Koordinaten angeben, damit das Programm weiß, welche Fläche eingefärbt werden soll.
Die Koordinaten von den Ländern sind jeweils in einer ArrayList gespeichert.
Ich möchte jetzt diese ArrayLists in einem Array zusammenfassen, sodass man z.B. einen Zufallsgenerator verwenden könnte.
Ich habe es schon mal versucht, aber ich kenne mich noch zu wenig aus und weiß nicht genau, wie der Code dafür lautet.
Vielen Dank für eure Hilfe im Voraus
Ich möchte ein Geographie Spiel programmieren. Dabei möchte ich die einzelnen Länder auf der Karte einfärben.
Ich muss jetzt für jedes Land die Koordinaten angeben, damit das Programm weiß, welche Fläche eingefärbt werden soll.
Die Koordinaten von den Ländern sind jeweils in einer ArrayList gespeichert.
Ich möchte jetzt diese ArrayLists in einem Array zusammenfassen, sodass man z.B. einen Zufallsgenerator verwenden könnte.
Ich habe es schon mal versucht, aber ich kenne mich noch zu wenig aus und weiß nicht genau, wie der Code dafür lautet.
Vielen Dank für eure Hilfe im Voraus
Code:
private void einfaerben()
{
final ArrayList<GeoPosition> deutschland = new ArrayList<GeoPosition>();
/** Der ArrayList werden neue Daten hinzugefuegt. Diese Daten geben die Koordinaten
* des Polygons an.**/
deutschland.add(new GeoPosition(47.97,7.82));
deutschland.add(new GeoPosition(47.81,12.83));
deutschland.add(new GeoPosition(50.27,12.06));
deutschland.add(new GeoPosition(50.98,14.89));
deutschland.add(new GeoPosition(54.83,14.21));
deutschland.add(new GeoPosition(54.72,6.92));
final ArrayList<GeoPosition> grossbritannien = new ArrayList<GeoPosition>();
grossbritannien.add(new GeoPosition(51.45,2.50));
grossbritannien.add(new GeoPosition(50.06,-5.71));
grossbritannien.add(new GeoPosition(58.26,-7.51));
grossbritannien.add(new GeoPosition(58.44,-12.74));
// final ArrayList<ArrayList> laender [] = new ArrayList [deutschland, grossbritannien];
meineKarte.getTileFactory().geoToPixel(new GeoPosition(52,9,0,9,58,0), 13);
/** Hier wird eine Klasse Painter innerhalb der Klasse Karte erstellt.**/
Painter<JXMapViewer> polygonOverlay = new Painter<JXMapViewer>()
{
/** Der Methode paint werden verschiedene Parameter uebergeben.
* Es werden Objekte der Klassen Graphics2D und JXMapViewer sowie
* Variablen des Datentyps int deklariert.**/
public void paint(Graphics2D g, JXMapViewer map, int w, int h)
{
/** Mit der Methode paint und den gegebenen Parametern wird vom
* Objekt painter der Waypoint gezeichnet.**/
painter.paint(g, map, w, h);
g = (Graphics2D)
g.create();
/** Hier werden die graphischen Koordinaten in world bitmaps
* umgewandelt.**/
Rectangle rect = map.getViewportBounds();
g.translate(-rect.x, -rect.y);
/** Ein Objekt poly der Klasse Polygon wird erzeugt.**/
Polygon poly = new Polygon();
/** Die for-Schleife wird so oft ausgeführt, wie die ArrayList region
* Elemente enthaelt.**/
for(GeoPosition gp : deutschland)
{
//convert geo to world bitmap pixel
Point2D pt = map.getTileFactory().geoToPixel(gp, map.getZoom());
poly.addPoint((int)pt.getX(),(int)pt.getY());
}
/** Hier werden der Inhalt und die Ränder des Polygons eingefaerbt.**/
g.setColor(new Color(255,0,0,100));
g.fill(poly);
g.setColor(Color.RED);
g.draw(poly);
g.dispose();
}
};
/** Dem Objekt meineKarte wird der OverlayPainter uebergeben.**/
meineKarte.setOverlayPainter(polygonOverlay);
}