Ich habe an einem Brettspiel gearbeitet, das ein Hex-Gitter als dieses Brett hat:
Da sich das Board niemals ändert und die Leerzeichen auf dem Board immer mit denselben anderen Leerzeichen um das Board herum verknüpft sind, sollte ich jedes Leerzeichen mit den von mir benötigten Werten hart codieren? Oder sollte ich verschiedene Algorithmen verwenden, um Links und Traversen zu berechnen?
Genauer gesagt handelt es sich bei meinem Brettspiel um ein 4-Spieler-Spiel, bei dem jeder Spieler ein Hex-Raster von 5 x 5 x 5 x 5 x 5 x 5 hat (siehe Abbildung oben). Das Ziel ist es, von der Unterseite des Gitters nach oben zu gelangen, wobei verschiedene Hindernisse im Weg sind und jeder Spieler sich vom Rand seines Gitters aus auf der Grundlage eines Entfernungsmultiplikators auf andere Spieler angreifen kann.
Da sich das Gitter des Spielers niemals ändert und der Abstand eines beliebigen Feldes vom Rand des Gitters immer gleich ist, sollte ich diese Zahl nur hart in jedes der Felder codieren oder trotzdem einen breiten ersten Suchalgorithmus verwenden, wenn Spieler greifen an?
Der einzige Nachteil, den ich mir für die harte Codierung vorstellen kann, ist, dass ich 9+ 2 (5 + 6 + 7 + 8) = 61 einzelne Zellen codiere. Fehlt mir noch etwas, das ich in Betracht ziehen sollte, komplexere Algorithmen zu verwenden?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
Sie natürlich zu {X-1, Y}
und {X+1, Y}
in die gleiche Reihe gehen. In den Zeilen darunter und darüber können Sie zu {X, Y-1}
und gehen {X, Y+1}
. Schließlich können Sie abhängig von der Gleichmäßigkeit von Y
zu {X-1, Y-1}
und {X-1, Y+1}
oder {X + 1, Y-1} `und{X+1, Y+1}