sechseckige Felder

Zarquon

Neues Mitglied
Guten Abend!

Ich habe mich in den letzen Wochen mit dem Buch "Java ist auch eine Insel" etwas in Java eingelesen. Gerade bin ich ungefähr auf S. 650 von 1300. Ich habe mir zum Ziel gesetzt, ein einfaches, grafisches Strategiespiel zu programmieren und dieses Schritt für Schritt zu erweitern. Nur leider ist der Abschnitt zum Thema "grafische Benutzeroberflächen" nicht gerade sehr tiefgehend. Nach einer Internetrecherche habe ich herausgefunden (und -probiert) wie ich rechteckige Felder mache, die auch schon auf Klicks reagieren. Nun aber meine Frage: wie kriege ich es hin, die Felder für mein Spiel sechseckig und trotzdem einzeln anklickbar zu machen? Kann mir vielleicht einige Anhaltspunkte für einen Einsteiger liefern? Vielen Dank!
 

JCODA

Top Contributor
Entweder als Nährung Kreise verwenden oder was mir spontan dazu einfällt die gezeichnete Szene nichtnur für den Benutzer zeichnen, sondern intern die Szene mit unterschiedlichen Farben pro Sechseck auf ein BufferedImage rendern. Danach musst du einfach die Koordinaten auf dem BufferedImage auslesen und die Farbe dem jeweiligen Sechseck zuornen. "Color Picking" heißt das glaube ich mal.

Soviel zu "anklickbar", Zeichnen von Sechsecken müsste in Swing mit der Klasse Polygon (Java 2 Platform SE v1.4.2) funktionieren.
 
Zuletzt bearbeitet:

Bernd Hohmann

Top Contributor
Das machst Du genauso wie mit Kreisen, nur eckiger.

Am einfachsten ein zweidimensionales Array mit den Mittelpunkten der 6ecke erzeugen und dann einen "SechsEckPainter" der vom Mittelpunkt aus mit .drawLine(...) die 6ecke malt. Die Koordinaten vom Malen hebst Du Dir im Painter-Objekt auf und beim Mausklick gehst Du einfach durch alle "SechsEckPainter" (oder wie sie nun heissen) durch und fragst "Liegt der Mausklick innerhalb deines Bereichs?"

Also so mal ganz primitiv.

Bernd
 

Melfis

Aktives Mitglied
Würde es, wie JCODA, per Polygon machen, damit kannst du es per [JAPI]Graphics2D[/JAPI] g2.fill([JAPI]Shape[/JAPI] s) zeichen und mit contain(x,y) schauen ob der mausklick im polygon liegt.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen


Oben