Autor Beitrag
Maric
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Mo 15.11.10 20:26 
Ich habe ein zweidimensionales Array mit Sechsecken und will wissen, ob es einen algorithmischen Trick gibt, mit dem ich in jeder der drei Richtungen (oben-unten,rechtsoben-linksunten,linksoben-rechtsunten) die benachbarten Felder feststelle. Oben-unten ist nicht schwer, einfach y Koordinate hoch bzw runterzählen, aber in den Schrägen ist das ja mehr oder weniger abwechselnd. Wenn mir außer mit mod 2 zu Arbeiten nichts übrig bleibt reicht auch ein nein.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 15.11.10 20:35 
Numerier sie doch einfach durch und schau nach der Gesetzmäßigkeit.

_________________
Na denn, dann. Bis dann, denn.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 15.11.10 20:45 
user profile iconMaric hat folgendes geschrieben Zum zitierten Posting springen:
Wenn mir außer mit mod 2 zu Arbeiten nichts übrig bleibt reicht auch ein nein.
Besonders wenn es um Felder mit unbeschränktem Ausmaß geht, kann es eleganter sein, die "y-Achse" diagonal zu legen, aber wenn du sie schon als "senkrecht-alternierend" festgelegt hast - ja, dann hast du da quasi per definitionem ein mod 2 drin :) .

_________________
>λ=
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Mo 15.11.10 20:51 
user profile iconMaric hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe ein zweidimensionales Array mit Sechsecken und will wissen, ob es einen algorithmischen Trick gibt, mit dem ich in jeder der drei Richtungen (oben-unten,rechtsoben-linksunten,linksoben-rechtsunten) die benachbarten Felder feststelle. Oben-unten ist nicht schwer, einfach y Koordinate hoch bzw runterzählen, aber in den Schrägen ist das ja mehr oder weniger abwechselnd. Wenn mir außer mit mod 2 zu Arbeiten nichts übrig bleibt reicht auch ein nein.


Verstehe irgendwie nicht ganz das Problem. Wie sind die denn gelagert? So:

ausblenden Quelltext
1:
2:
3:
. . . . .
 . . + .
. . . . .


Du willst jetzt also z. B. wissen, welche Felder an das + angrenzen??
Maric Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 16.11.10 20:44 
ja genau so

@ Post vorher wenn ich die y Achse schräg lege, bringt mich das auch nicht weiter, weil die anderen beiden immer noch im 120 Winkel davon abstehen

ich kann das noch alles umstrukturieren, wäre also kein Problem wenn es eine Struktur gäbe in der sich das leicht bestimmen lässt (objekte mit Nachbarschafts-referenzen sind mir aber doch zu aufwändig)... dann her damit
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 16.11.10 22:03 
user profile iconMaric hat folgendes geschrieben Zum zitierten Posting springen:
@ Post vorher wenn ich die y Achse schräg lege, bringt mich das auch nicht weiter, weil die anderen beiden immer noch im 120 Winkel davon abstehen
Natürlich, aber die Vektoren zu den einzelnen Nachbarn sind dann konstant und nicht mehr von der Zeile abhängig.

_________________
>λ=
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 16.11.10 22:11 
Also sagen wir mal so: in meinen HexGames mache ich das so, dass ich die relativ längliche Funktion zur Berechnung der Nachbarn (naja, ein if halt was je nach Zeile unterschiedliche Richtungen geht) beim Map erstellen genau einmal aufrufe und jedem Tile eine Liste "Neighbors" gebe, die die (max. 6) Nachbarn enthält. Über die braucht man dann nur noch zu iterieren.

Hat sich bewährt...

Bei DGL gibts auch was dazu.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Mr_Emre_D
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 114
Erhaltene Danke: 14



BeitragVerfasst: Di 16.11.10 22:55 
Voila, mir war langweilig!
Ich hoffe, dies ist die Antwort auf das Problem. Bin immernoch im Ungewissen darüber, was das eigentliche Problem ist; aber wie auch immer!

MfG
Einloggen, um Attachments anzusehen!