| Autor |
Beitrag |
-lx-
Hält's aus hier
Beiträge: 11
Win XP
Delphi 7 Personal
|
Verfasst: Di 20.09.05 18:40
... man ihren Weg nachverfolgen kann! ?
Hallo erstmal.
Und zwar hat mich heute mein Info-Lehrer ein wenig ins grübeln gebracht. Er hatte ein Delphi Programm auf dem eine Fliege zu sehen war. Diese bewegte sich nach belieben in alle möglcihen Richtungen jedoch mit Pausen dazwischen. Wie man Objekte verschiebt ist mir klar nuw ie kann man sie verschieben, dass man deren Weg mitverfolgen kann??
Ich hab dazu nichts wirklich brauchbares gefundne und wüsste jetzt auch nicht, wie man des irgendwie lösen könnte.
Ich hoffe mir kann hier jemand zu dieser warscheinlich einfachen Aufgabe helfen!
mfg
CYa Moderiert von Christian S.: Topic aus Sonstiges verschoben am Di 20.09.2005 um 19:46
|
|
ManuelGS
      
Beiträge: 173
Win XP HE, Suse Linux
D6, D7, D2005 Personal
|
Verfasst: Di 20.09.05 18:45
Du meinst, wie man sowas animieren kann?
_________________ "Leben ist gänzlich Bühne und Spiel; so lerne denn spielen
und entsage dem Ernst - oder erdulde das Leid." - Palladas von Alexandria
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: Di 20.09.05 18:48
Wie wäre es, wenn du einfach ne Fliege zeichnest, und diesee verschiebst, ohne dass du n repaint o.ä. reinsetzt.....dann zieht die Fliege ne spur hinter sich her und du weißt, wo sie hergeflogen ist
Oder wie meinst du das?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.09.05 19:08
Moin!
Meinst du sowas ähnliches?
cu
Narses
Einloggen, um Attachments anzusehen!
|
|
-lx- 
Hält's aus hier
Beiträge: 11
Win XP
Delphi 7 Personal
|
Verfasst: Di 20.09.05 19:55
Ohje... ich hab mich wohl wieder mal unverständlich ausgedrückt!
Also... es ist ja so. Man kann die Position von z.B. einer Grafik durch..
Delphi-Quelltext 1: 2:
| Grafik.top:= random(500); Grafik.left:= random(600); |
mit Hilfe eines Zufallwertes verändern. Nehmen wir an, wenn man mit der Maus auf die Grafick klickt, dann bekommt die Garfik eien neue Zufallsposition zugewiesen. Erst war sie auf der rechten Seite dann ist sie plötzlich auf der Linken.
Ich würde aber gerne wissen, wie man das machen kann, dass man die Grafik dazu bringen kann, einem Weg sozusagen zu folgen.
Also nicht dass sie auf einmal verschwindet und wieder woanders auftaucht, sondern dass die Garfik rüber rutscht, rüber läuft, sich rüber bewegt. Quasi einem Pfad, einem Weg folgt.
Ich hoffe ihr wisst jetzt was ich meien!
mfg
Cya
/Edit: Ja genau sowas meien ich... nur dass sich die Fliege oder die Garfick noch großfläschiger sich bewegt.
Moderiert von Klabautermann: Delphi-Tags hinzugefügt.
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: Di 20.09.05 20:59
ZU dem Anhang: ICh mags nich, wenn mir angezeigt wird "Ungültiges Streamformat" ^^
HAst das mit D7 programmiert?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.09.05 21:03
Moin!
Da hier bisher sonst keiner einen Anhang gepostet hat, werd´ ich wohl gemeint sein...
Kroni hat folgendes geschrieben: | | ZU dem Anhang: ICh mags nich, wenn mir angezeigt wird "Ungültiges Streamformat" ^^ |
Das bleibt dir auch unbenommen, du darfst mögen oder nicht, was du willst!
Kroni hat folgendes geschrieben: | | HAst das mit D7 programmiert? |
Yip.
-lx- hat folgendes geschrieben: | | nur dass sich die Fliege oder die Garfick noch großfläschiger sich bewegt. |
Dann schau dich mal nach dem Bresenham-Algorithmus um, damit kannste die Pixel einer Linie sehr einfach berechnen; dir packste dann in ein Array und "läufst" diese entlang. Fertig.
cu
Narses
|
|
-lx- 
Hält's aus hier
Beiträge: 11
Win XP
Delphi 7 Personal
|
Verfasst: Di 20.09.05 22:13
Die "Fliege" soll ja nicht auf etwas vordefenierten entlang gleiten sondern sich zufällig drch den Raum bewegen.
Mh... ich weis jetzt nicht recht wie du das meinst.
Sorry...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.09.05 22:17
Moin!
-lx- hat folgendes geschrieben: | Die "Fliege" soll ja nicht auf etwas vordefenierten entlang gleiten sondern sich zufällig drch den Raum bewegen.
Mh... ich weis jetzt nicht recht wie du das meinst. |
Du bestimmst natürlich einen zufälligen Punkt, zu dem die Linie geht; wenn die Fliege angekommen ist, nimmst du einen neuen.
Das ganze auf lineare Strecken zu beschränken hat den Vorteil, dass man es relativ einfach realisieren kann; zugegeben, eine "echte" Fliege würde eher zufälligen Bezierkurven folgen, aber das ist nicht ganz trivial umzusetzen...
cu
Narses
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Di 20.09.05 22:33
1.(Ich würde aber gerne wissen, wie man das machen kann, dass man die Grafik dazu bringen kann, einem Weg sozusagen zu folgen.)
2.(Die "Fliege" soll ja nicht auf etwas vordefenierten entlang gleiten sondern sich zufällig durch den Raum bewegen).
Irgendwie wiederspricht sich das, oderseh Ich das falsch.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 20.09.05 22:38
Moin!
Blackheart666 hat folgendes geschrieben: | | Irgendwie wiederspricht sich das, oderseh Ich das falsch. |
So gesehen siehst du das richtig.
Da die Endpunkte (ob nun Linie oder Bezier) zufällig gewählt sind, trifft "auf diese Weise" beides zu.
Wenn du mehr über Bezier-Kurven erfahren willst, hindert dich niemand, sowohl die Forum-Suche als auch Google zu "bemühen".
cu
Narses
|
|
-lx- 
Hält's aus hier
Beiträge: 11
Win XP
Delphi 7 Personal
|
Verfasst: Mi 21.09.05 13:30
Ohje ihr bringt mich in Verlegenheit
Also die Grafik soll schon einem "Weg" folgen aber der Weg soll zufällig defeniert werden.
Also dass man eien lineare Funktion verwendet hört sich ganz gut an nur wie bringt man die Grafik dazu, sich von Punkt Azu Punkt B zu bewegen ??
mfg
Cya
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mi 21.09.05 13:41
Also ein funktion dazu wäre ungefähr sowas:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| ontimer.... begin a:=random(2); b:=random(2); if (a=1)then fly.top:=fly.top+1; if (b=1)then fly.left:=fly.left+1; if (a=2)then fly.top:=fly.top-1; if (b=2)then fly.left:=fly.left-1; end; |
Und dann den TImer alle 100 ms auslösen oder sowas in der art!
Wenn du willst dass sie z.B. eine kurve fliegt, kannst du sinus und cosinus hernehmen:
cos(x);
sin(x);
geht aber auch zufällig mit der obigen funktion.
Wenn du das aber nicht kennst dann kannst du mal in Wikipedia nachschauen!
So ein Programm was ihr Programmieren wollt kenn ich. Da muss man mit der Maus die Fliege erschlagen!
Gruß
hallo
PS: Kann sein dass ich das Problem nicht ganz erkannt hab, aber ich glaube er wollte wissen, wie man ein Objekt so von a zu b verschiebt, dass man die zwischenpunkte sehen kann.
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
-lx- 
Hält's aus hier
Beiträge: 11
Win XP
Delphi 7 Personal
|
Verfasst: Mi 21.09.05 14:33
Also bis jetzt habe ich einen roten Punkt. Den soll man fangen, wenn man aber mit der Maus drüber geht, bekommt der Punkt einne neue Zufallskoordinate zugewiesen. Ich möchte es jetzt aber so machen, dass dieser rote Punkt sich zu einem zufälligne neuen Punkt HINBEWEGT... also dass man seien bahn mitverfolgen kann. Also immer wenn die Maus den Punkt "berührt" bekommt er eien neue zuföllige Flugbahn bzw. Endpunkt zugeteilt.
Was hat es mit " fly.top " aufsich?
" Fly " find ich niergends und Delphi sagt dass er den Befehl nicht kennt.
Sorry... ihr schlagt sicherlichs chon die Hände überm Kopf zusammen
mfg
Cya
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mi 21.09.05 14:40
fly kann einfach ein TPanel oder TShape oder ähnliches mit dem Name-Attribut Fly sein!
Am besten ist es, wenn du schon vorher die Flugbahn berechnest.
Wenn deine Fliege auch kruven fliegen soll, wäre sinus und cosinus unteressant für dich!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: Mi 21.09.05 14:43
guck mal nach Polarkoodrdinaten.....=)
|
|
-lx- 
Hält's aus hier
Beiträge: 11
Win XP
Delphi 7 Personal
|
Verfasst: Mi 21.09.05 17:35
Ich poste jetzt einfach mal ne Quelltext so wie ich es bis jetzt habe.
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: 34: 35:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) SObjekt: TShape; Label1: TLabel; procedure SObjektMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SObjektMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin SObjekt.Left:= random(800) ; SObjekt.Top:= random(500) ; end;
end. |
Mit dem " top " habe ich ja hier...
Wenn ich nach Polarkoordinaten suche, finde ich hie rim Board nichts, bei Google nichts und in Delpi auch nichts.
ahje....
Wie kann ich den lineare Funktionen mit zufälligen Werten erzeugen? Und wie kann ich der Grafik sagen, dass si ihr folgen soll ??? Ich weis jetzt echt net, wie man des machen soll...
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 21.09.05 23:53
Moin!
-lx- hat folgendes geschrieben: | | Wie kann ich den lineare Funktionen mit zufälligen Werten erzeugen? |
Du sollst keine linearen Funktionen erzeugen, sondern zufällige Punkte und diese mit einer Linie verbinden. Wenn du zwei Punkte hast, dann liefert dir der Bresenham-Algo auf einfache Weise die Punkte "dazwischen". Die schreibst du in ein Array und läufst in jedem Timerevent ein Array-"Element" (=Punkte auf der Linie) weiter. Wenn kein Punkt mehr im Array ist, suchste dir wieder einen neuen und berechnest die Punkte bis dahin wieder ins Array und so weiter...
-lx- hat folgendes geschrieben: | | Und wie kann ich der Grafik sagen, dass si ihr folgen soll ??? |
s.o., Punkte in ein Array und im Timer-Ereignis "durchgehen" und an die Grafik zuweisen.
-lx- hat folgendes geschrieben: | | Ich weis jetzt echt net, wie man des machen soll... |
Hmm  vielleicht solltest du auch erstmal noch ein paar Anfänger-Tuts machen, oder?
cu
Narses
|
|