Prima di tutto, so di essere super denso qui.
A parte questo, sto cercando di scrivere un'implementazione C # di questo algoritmo:
var results = []
for each -N ≤ dx ≤ N:
for each max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N):
var dz = -dx-dy
results.append(cube_add(center, Cube(dx, dy, dz)))
L'ho preso da questa straordinaria risorsa.
Il mio problema è che ogni implementazione di questo che ho provato finora ha avuto risultati folli. Ad esempio, il codice mostrato di seguito attualmente risulta in questo:
e questo:
Il mio codice attualmente si trova così:
for (int x = this.CellPositionX - distance; x <= this.CellPositionX + distance; x++)
{
for (int y = this.CellPositionY - Math.Max(-distance, -x - distance); y <= this.CellPositionY + Math.Min(distance, -x + distance); y++)
{
HexPosition rangePosition = new HexPosition(x, y);
range.Add(rangePosition);
}
}
Qualcuno può individuare qualcosa di sbagliato qui? Tutti i suggerimenti sono benvenuti. Ci sto sbattendo la testa da un po 'ormai.
Grazie!
Nota aggiornata: sto usando le coordinate assiali nella griglia. Aggiornamento n. 2: come indicato di seguito, ho sbagliato il ciclo for..each e non ho utilizzato delta per l'allenamento. Grazie per l'aiuto!
Attualmente ho un problema come mostrato di seguito con l'implementazione dalle risposte:
Continuerò a indagare: se lo scoprirò, pubblicherò i risultati completi qui. Ringrazia tutti!