Hexagon Spielfeld

S

Skanky

Mitglied
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

Fu3L

Top Contributor
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^^
 
S

Skanky

Mitglied
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

Fu3L

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

Skanky

Mitglied
Ja, das Tuto mein ich :D, 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

Fu3L

Top Contributor
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.
 
S

Skanky

Mitglied
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

Fu3L

Top Contributor
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^^
 
S

Skanky

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

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

Ähnliche Java Themen

Anzeige

Neue Themen


Oben