Autor Beitrag
Clemens L.
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 158

Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
BeitragVerfasst: 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 158

Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
BeitragVerfasst: Mo 02.06.08 17:46 
So, hat sich jetzt doch schon erledigt, habe eine Lösung gefunden:

ausblenden volle Höhe Delphi-Quelltext
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 02.06.08 18:02 
Hallo,

user profile iconClemens 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 158

Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
BeitragVerfasst: Mo 02.06.08 18:14 
user profile iconYogu hat folgendes geschrieben:
Hallo,

user profile iconClemens 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


Na dann, umso besser! :D
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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
BeitragVerfasst: 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 158

Win Xp SP3
D6 Enterprise, Turbo Delphi Explorer
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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
BeitragVerfasst: 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 :D :D ... 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