Einzelnen Beitrag anzeigen

Stoney

Registriert seit: 6. Nov 2004
Ort: Königsbrunn
30 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Ausgewähltes Sprites zu Mausklick-Koordinaten bewegen?

  Alt 4. Sep 2009, 23:10
So etwas was du suchst, habe ich in meinem letzten Spiel implementiert, siehe hier. Allerdings ist der bei dir angegebene 4. Schritt bei mir nicht vorhanden, das ausgewählte Sprite bleibt bei mir ausgewählt.

Hier mal in ganz groben Zügen wie das Ganze gelöst werden könnte (Das Sprite muss noch mit TSpielObjekt verknüpft werden):
Delphi-Quellcode:
TSpielObjekt = class
private
  FSelected: Boolean;

  // Statt TPoint kann auch jeder andere Datentyp genommen werden, der min. X und Y Koordinate speichern kann
  FPosition, FDestination: TPoint;

  procedure SetSelection(Value: Boolean);
public
  constructor Create;
  destructor Destroy;

  procedure Move(Destination: TPoint);
  procedure Update;
published
  property Selected: Boolean read FSelected write SetSelection;
end;

...

procedure TSpielObjekt.SetSelection(Value: Boolean);
begin
  FSelected := Value;
  {
    Hier noch zusätzliche Sachen einfügen, wie in der GUI anzeigen oder ähnliches
    Wenn das nicht benötigt wird, dann folgende Zeile
    property Selected: Boolean read FSelected write SetSelection;
    in
    property Selected: Boolean read FSelected write FSelected;
    abändern
  }
  
end;

procedure TSpielObject.Move(Destination: TPoint);
begin
  if Selected then FDestination := Destination;
end;

procedure TSpielObject.Update;
begin
  if (FPosition.X = FDestination.X) and (FPosition.Y = FDestination.Y) then
  begin
    // Wenn Position erreicht wurde, Selektion entfernen
    Selected := false;
  end else
  begin
    // Zum Ziel bewegen
    // Mit Geschwindigkeit von 1 Pixel pro Frame
    if FPosition.X > FDestination.X then FPosition.X := FPosition.X - 1 else FPosition.X := FPosition.X + 1;
    if FPosition.Y > FDestination.Y then FPosition.Y := FPosition.Y - 1 else FPosition.Y := FPosition.Y + 1;
  end;
end;

Wenn dir das nicht reicht, kannst du auch gerne den Quelltext zu meinem oben verlinkten Spiel anschauen, aber ich bin mir nicht sicher, ob dir das weiterhilft, weil mein Spiel nicht auf Andorra 2D aufbaut.
Johannes Stein
  Mit Zitat antworten Zitat