EDIT: Wrapped die Beispielkarte in einem Codeblock, damit die Formatierung korrekt ist.
Ok, ich versuche einen extrem einfachen A * Algorithmus über ein hexagonales Gitter zu schreiben. Ich verstehe und kann den A * -Teil machen. Tatsächlich funktioniert mein A * für quadratische Gitter. Was ich nicht mit meinem Gehirn umgehen kann, ist Nachbarn mit Sechsecken zu finden. Hier ist das Layout für das heckförmige Gitter
%Vor%etc, usw.
Ich brauche also Hilfe, um eine Hexagon-Klasse zu schreiben, die aufgrund ihrer Hex-Koordinaten eine Liste von Nachbarn erzeugen kann. Es muss in der Lage sein, Nachbarn zu erzeugen, die vom Raster fallen würden (wie 0000 oder 2101 in einem 20x20-Raster), weil meine A * -Strecken über mehrere Karten hinweg nebeneinander liegen. Also etwas, das mit diesem Code-Snippet funktionieren würde:
planet = Hex ('0214') Drucken (planet.neighbors ()) [Hex 0213, Hex 0215, Hex 0115, Hex 0315, Hex 0116, Hex 0316]
Es hängt davon ab, wie Sie die Koordinaten Ihrer Hex-Kacheln definieren.
Mal sehen.
%Vor%In diesem Fall ist die Nachbardefinition für gerade und ungerade Zeilen unterschiedlich.
Für eine Zelle (X, Y), wo Y gerade ist, sind die Nachbarn: (X, Y-1), (X + 1, Y-1), (X-1, Y), (X + 1, Y), (X, Y + 1), (X + 1, Y + 1) )
Für eine Zelle (X, Y), wo Y ungerade ist, sind die Nachbarn: (X-1, Y-1), (X, Y-1), (X-1, Y), (X + 1, Y), (X-1, Y + 1), (X, Y + 1) )
Tags und Links python grid tiles hexagonal-tiles