AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ausgewähltes Sprites zu Mausklick-Koordinaten bewegen?
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgewähltes Sprites zu Mausklick-Koordinaten bewegen?

Ein Thema von MydroF · begonnen am 4. Sep 2009 · letzter Beitrag vom 7. Sep 2009
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz