Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
Delphi 12 Athens
|
AW: Zielsuchende Objekte
10. Aug 2010, 21:35
Diese sollen also in einer "direkten" geraden zur Mitte laufen?
da es ja "quasi" nur in ganzen Pixeln/Feldern/Schritten geht:
- berechne die X&Y-Abstände zu dem gewünschten Zielpunkt
(z.B. x_abstand = x_zielpunkt - x_position)
- such dir den kleinesten Wert davon aus (mit abs das Vorzeichen entfernen)
- in diese Richtung gehst du dann
(if abs(x_abstand) > abs(y_abstand) then x_position=x_position+/-1 else y_position=y_position+/-1 )
- wenn wenn das Zielfeld aber schon besetzt ist, dann nimm die andere Richtung
- wenn keiner der beiden Wege möglich ist, dann entweder per Zufall in einer der verbleibenden Wichtungen gehn oder erstmal stehenbleiben
- sind beide Abstände kleiner-gleich 20, dann auch stehenbleiben
falls auch diagonal gesprungen werden darf, dann
- wenn x_abstand wesentlich größer als y_abstand und x_abstand größer 20, dann in nur x-richtung gehn
- oder wenn y_abstand wesentlich größer als x_abstand und y_abstand größer 20, dann nur in y-richtung gehn
- oder wenn x_abstand und y_abstand größer 20, dann in x und y gehn
- oder wenn x_abstand größer 20, dann in x
- oder wenn y_abstand größer 20, dann in y
- oder stehenbleiben
(auch hier die Abstände ohne Vorzeichen vergleichen)
falls es nicht ganz gerade sein soll, dann auf diesen weg eine Zielrichtung berechnen und dann per zufall eine Richtung auswählen, dabei aber natürlich in Zielrichtung den Zufall höher gewichten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
Geändert von himitsu (10. Aug 2010 um 21:37 Uhr)
|