# Hexagon Spielfeld



## Skanky (4. Sep 2011)

Hi,

ich bin noch relativ grün hinter den Ohren war Java angeht und bräuchte deswegen ein paar schubser in die richtige Richtung. 

Ich möchte mir für ein kleine Spiel ein Spielfeld aus Hexagon erstellen. Was dank des Forums auch kein Problem ist. Aber irgendwie fehlt mir die zündende Idee wie ich es jetzt machen kann, das ich Objekt (erst mal nur ein Quadrat) auf eins dieser Felder setzen kann und das Objekt quasi in die Mitte gestellt wird und weiß das es jetzt auf dem ausgewählten Feld steht. Ein mehr oder weniger funktionierendes Drag and Drop hab ich mir schon gebaut, aber ich weiß halt nicht wie ich effizient dem Objekt sagen kann, wo es jetzt ist.

Ich hoffe man weiß worauf ich hinaus will^^

Kurz: es soll ähnlich wie beim Schach sein, wo man eine Figur auf zB.: A6 schiebt und die Figur weiß das sie auf A6 steht.

ich bin für jeden Denkanstoß dankbar 

Mit besten Grüßen 
Skanky


----------



## Fu3L (4. Sep 2011)

Wie speicherst du die Positionen der Hexagone? Wenn du die Mitte der Hexagone kennst, kannst du die Objekte auch dadrauf positionieren, indem du die Koordinaten des Mauszeigers zum Zeitpunkt des loslassens verwendest.
Ich würde die Hexagone auch als Shape-subklasse repräsentieren (wenns keine vorgefertigte gibt, wirst du wohl etwas Rumrechnerei implementieren müssen). Dann kannst du praktisch mit Shape.intersects(Point p) prüfen, ob die Mauskoordinaten drinne sind. 
Sollte das Feld scrollbar sein, musst du natürlich die Verschiebung mit reinrechnen, bei der anschließenden Positionierung des Objekts.

Edit: Alles unter Vorraussetzung, dass du alles irgendwie selbst auf ein (J)Panel zeichnest und nicht irgendwie irrwitzigerweise für jedes Tile ein Panel erzeugst oder sowas^^


----------



## Skanky (4. Sep 2011)

Erst einmal danke 

Ich habe mein "Spiel" nach einem der guten Tutos hier aus dem Forum geschrieben. Und da erbt die Hauptklasse von JPanel.
Ja, das Feld soll irgendwann einmal scrollbar sein. Aber das ist noch weit weit entfernt.

Soweit ich beim kurz überfliegen feststellen konnte, geht Shape wirklich in die Richtung


----------



## Fu3L (4. Sep 2011)

Wenn du zufällig das gute von Quaxlie meinst, dann kennst du Shape schon. Rectangle erbt nämlich von Shape


----------



## Skanky (6. Sep 2011)

Ja, das Tuto mein ich , das war wirklich klasse.

Da stellt sich mir auch gleich die frage, ob ich einiges davon auch als Grundlage für ein Strategiespiel nutzen kann und wenn ja, ob das Hexa-Spielfeld auch ein Sprite ist (was ja, nach meinen ersten Überlegungen ein Sprite sein müsste)…


----------



## Fu3L (6. Sep 2011)

Also das Spielfeld verdient eine eigene Klasse (die aber durchaus die beiden Interfaces für doLogic() und drawObject() implementieren kann/sollte)
Das Spielfeld enthält dann eine Liste/Map von Hexagonen. Die sollten glaube ich nicht von Sprite erben, weil Sprite Rectangle2D.Double extended und deine Hexagone sind ja keine Rechtecke. Da würde ich dann eine neue Klasse für anlegen, speziell dafür.


----------



## Skanky (6. Sep 2011)

Hm so hab ich es jetzt auch, aber dann kann ich die Vorzüge von collidedWith() nutzen…

aber ich denke da kommt dann das Shape ins Spiel?!


----------



## Fu3L (6. Sep 2011)

Richtig. Ich möchte meine Beschreibung etwas verändern:
Das Spielfeld enthält eine Liste von Zellen. Eine Zelle ist eine Klasse die von Hexagon erbt und Hexagon erbt von Shape. 
Das Problem natürlich: Die Klasse Hexagon wirst du selbst schreiben müssen mit allen Methoden die es braucht! Das ist das Problem an der verwendung eines solch "komplizierten" Feldmusters^^
Siehs als Heruasforderung  Wiki ist bei der Mathematik bestimmt hilfreich^^


----------



## Skanky (6. Sep 2011)

Dem Internet sei dank, hab ich schon eine Klasse für Hexagon 

und dir möchte ich auch danken  auch wenn ich noch viele, viele weitere Fragen habe


----------

