| Autor |
Beitrag |
Clemens L.
      
Beiträge: 158
Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
|
Verfasst: Mo 02.06.08 16:48
Hallo,
ich probiere grad ein paar Sachen mit Fear2D aus, und bin nun auf ein kleines Problem gestoßen. Eigentlich meiner Meinung nach nix allzu kompliziertes, aber ich weiss trotzdem nicht wie ich das lösen könnte.
Ich will eine Funktion schreiben, die ein Objekt um einen bestimmten Schritt auf ein anderes zubewegt (Auf der Stecke Objekt A - Objekt B). Nun weiss ich nicht, wie ich auf der Strecke zwischen den Beiden funktionen um bspw. 10 nach vorne springe. Habe leider aber keine Ahnung wie ich das hinkriege!
_________________ Gruß, Clemens
Vor dem 27.04.08 als "hackerTreff" bekannt!
|
|
Clemens L. 
      
Beiträge: 158
Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
|
Verfasst: Mo 02.06.08 17:46
So, hat sich jetzt doch schon erledigt, habe eine Lösung gefunden:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure MoveBot(Bot: TSimpleObject; Dest: TSimpleObject); var mx, my, nx, ny, len : single; i: integer; X,Y: single; begin;
for i := 1 to 8 do begin mx := Bot.Position.X; my := Bot.Position.Y;
X := Dest.Position.X; Y := Dest.Position.Y;
nx := x-mx; ny := y-my; len := sqrt(nx*nx + ny*ny);
if(len<=1)then begin mx:=x; my:=y; end else begin nx := nx / (len); ny := ny / (len); mx := mx + nx; my := my + ny; end;
Bot.Position.X := mx; Bot.Position.Y := my; end; end; |
So geht das ganze recht gut, auch wenn es vielleicht nicht der beste Weg ist!
_________________ Gruß, Clemens
Vor dem 27.04.08 als "hackerTreff" bekannt!
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mo 02.06.08 18:02
Hallo,
Clemens L. hat folgendes geschrieben: | | So geht das ganze recht gut, auch wenn es vielleicht nicht der beste Weg ist! |
Doch, das ist er (und meines Wissens nach auch der einzige). Pythagoras hilft dir bei solchen Problemen immer gern weiter
Grüße,
Yogu
|
|
Clemens L. 
      
Beiträge: 158
Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
|
Verfasst: Mo 02.06.08 18:14
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Mo 02.06.08 19:27
Das soll funktionieren?
Du übergibst doch die Parameter als CallByValue, somit dürften sich die X und Y Werte doch garnicht verändern!?!?
Du solltest Bot und Dest doch eher per CallByReference übergeben =O ?
Oder irre ich mich?
MfG, Fighter#1
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
Clemens L. 
      
Beiträge: 158
Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
|
Verfasst: Mo 02.06.08 19:39
Also Bot und Dest sind ja nur Pointer auf die Objekte (Das was bewegt werden soll und das Ziel). X und Y (die Variablen) sind ja nur lokal definiert, und werden zum Rechnen benutzt. Objekte brauch man doch nicht als CallByReference zu übergeben. Die Prozedur funktioniert aufjedenfall einwandfrei!
|
|
Fighter#1
      
Beiträge: 787
Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
|
Verfasst: Mo 02.06.08 19:43
Au shit, k, sry!
Klar Objekte sind ja immernur Pointer auf die Objekte die aufm Heap liegen.
Autsch, hast natürlich recht! ... =)
Zu früh geantwortet^^
Außer in C++ wo ich grad mehr drinne Stecke da kann man Objekte auch aufn Stack laden xD  ... aber C und C++ sin ja eh voll spaßige Programmiersprachen^^ =D ... also, was da alles geht  .. ts ts ts ^^
_________________ Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
|
|
|