Hexagon-Spielfeld

Caliburns

Mitglied
Hallo,

ich möchte ein Hexagon-Spielfeld implementieren. Habe allerdings keine Idee wie das möglichst einfach dargestellt werden soll... Gibt es eine Möglichkeit dies mit Arrays oder einer Arraylist darzustellen? Wichtig wären die Koordinaten der einzelnen Felder. Damit die angrenzenden Felder emittelt werden können.

Danke
 

krgewb

Top Contributor
Bei einem Schachbrett könnte man mit 2D-Arrays arbeiten. Siehe hierzu
https://www.java-forum.org/thema/adresse.184014/
Da steht, wie anhand der Adresse die Koordinaten berechnet werden können. Mithilfe von Plus und Minus kommt man dann ganz einfach an die benachbarten Felder.

Hexagon scheint aber komplizierter zu sein. Ich würde eine Klasse für die Bienenwaben machen und die IDs der Nachbarn speichern in Variablen für Nordwest, Nordost, West, Ost, Südwest und Südost.
 

Caliburns

Mitglied
In die Richtung ging meine jetzige Idee auch. Du meinst ausgehend vom regulären 2D-Array die Nachbarn berechnen, die im Hexagon vorkommen? Diese IDs dann in der Hexagon-Klasse entsprechend speichern?
 

mrBrown

Super-Moderator
Mitarbeiter
Hexagon lässt sich doch auch einfach als 2D-Array speichern, jede zweite Reihe muss man nur als "verschoben" betrachten.

Mit Plus und Minus kommt man auch da an die Felder, die ersten 4 Nachbarn sind die gleichen wie beim normalen Schachfeld, die anderen beiden muss man Positionsabhängig berechnen mit entweder + bzw - [(-1,1),(1,1)] (wenn ich mich nicht grad verrechnet hab)

12307
 

Caliburns

Mitglied
Die Idee ist für mich nachvollziehbar. Aber wie sieht es als Java-Code aus? Ich kann also ein normales 2D-Array erstellen und durch die positionsabhängige Berechnung wird die "Verschiebung" schon berücksichtigt, richtig?
 

mihe7

Top Contributor
Es gibt insgesamt sechs Nachbarfelder. Oben und unten ist eindeutig. Links und rechts nicht, da es jeweils zwei gibt. Wenn Du die Bilder von mrBrown und mir vergleichst, stellst Du fest, dass seine zweite Spalte nach oben, meine dagegen nach unten verschoben wurde. Die Info brauchst Du zusätzlich, um die Nachbarn korrekt zu berechnen.

Ich bleibe mal bei seinem Muster.
Code:
+----------+---------------------------------------------------------------------------+        
|          |                              Nachbarn                                     |
| Spalte   | oben    | unten   | links oben | links unten | rechts oben | rechts unten |
|--------------------------------------------------------------------------------------|
| gerade   | (x,y-1) | (x,y+1) | (x-1, y-1) | (x-1, y)    | (x+1, y-1)  | (x+1, y)     |
| ungerade | (x,y-1) | (x,y+1) | (x-1, y)   | (x-1, y+1)  | (x+1, y)    | (x+1, y+1)   |
+----------+---------+---------+------------+-------------+-------------+--------------+
 

Ähnliche Java Themen

Neue Themen


Oben