Hallo,
bei gridbasierten Spielen bekommt man vor der Bewegung alle erreichbaren Punkte angezeigt. Dabei hat der Spieler eine bestimmte Bewegungsreichweite. Ebenso haben alle Felder unterschiedliche Feldkosten, manche Felder sind gar nicht begehbar und ein Umweg muss in Kauf genommen werden.
Steht der Spieler auf einer Position (2D Grid) möchte ich alle erreichbaren Punkte berechnen. Meine wahrscheinlich umständlichste Idee wäre:
- über den Punkt und die Reichweite die beiden Außenpunkte
obenLinks und
untenRechts berechnen
- über dieses aufgespannte Rechteck alle Punkte holen
- für jeden Punkt den A* laufen lassen, ob der Punkt anhand der Feldkosten (nicht begehbare Punkte berücksichtigt) und der Bewegungsreichweite erreichbar ist
Ich bin mir relativ sicher, dass es
irgendwie einfacher geht, natürlich werden nur Integer miteinander verrechnet aber bei einem großen Grid könnte es möglicherweise doch rechenintensiv sein. Über eine Schleife kann ich schnell alle Punkte auf der horizontalen und vertikalen Linie berechnen. Bei den abweichenden Punkten, also beispielsweise die diagonalen Punkte, wüsste ich dann nicht mehr, wie ich diese berechne.
Typische Beispiele von Spielen wären Advance Wars oder Fire Emblem.
Hat jemand schon einmal sowas gemacht? Mit ein wenig mehr Mathe geht es bestimmt leichter