![]() |
gleichmäßige Beschleunigung
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Ich habe mich daran versucht ein Proramm zu erstellen in dem eine Kugel gleichmäßig beschleunigt wird. Obwohl ich den Aufbau meins Programmes logisch finde, funktioniert es einfach nicht. :cry: Könnt ihr mir helfen mein Problem zu lösen ? |
Re: gleichmäßige Beschleunigung
Delphi-Quellcode:
Was bitte ist das?! :shock:
vx[1]:= 100;
vx[2]:= 105; vx[3]:= 111; vx[4]:= 118; vx[5]:= 125; vx[6]:= 133; vx[7]:= 143; vx[8]:= 154; vx[9]:= 167; vx[10]:= 185; vx[11]:= 200; vx[12]:= 222; vx[13]:= 250; vx[14]:= 286; vx[15]:= 333; vx[16]:= 400; vx[17]:= 500; vx[18]:= 667; vx[19]:= 1000; vx[20]:= 2000; vx[21]:= 999999; vx[22]:= 2000; vx[23]:= 1000; vx[24]:= 667; vx[25]:= 500; vx[26]:= 400; vx[27]:= 333; vx[28]:= 286; vx[29]:= 250; vx[30]:= 222; vx[31]:= 200; vx[32]:= 185; vx[33]:= 167; vx[34]:= 154; {6,5...} vx[35]:= 143; vx[36]:= 133; vx[37]:= 125; vx[38]:= 118; vx[39]:= 111; vx[40]:= 105; vx[41]:= 100; |
Re: gleichmäßige Beschleunigung
Guten Abend,
wenn etwas beschleunigen soll, dann solltest Du die Schrittweite der Schritte vergrößern oder das TimerInterval verkleinern. Grüße Klaus
Delphi-Quellcode:
procedure TForm4.vxTimerTimer(Sender: TObject);
begin inc(counter); Form4.DoubleBuffered:=true; if links then image1.Left:=image1.Left-sqr(counter) else if rechts then image1.Left:=image1.Left+sqr(counter) ; end;
Delphi-Quellcode:
procedure TForm4.FormCreate(Sender: TObject);
begin counter:=0; keypreview:=true; end;
Delphi-Quellcode:
type
TForm4 = class(TForm) vxTimer: TTimer; Image1: TImage; aTimer: TTimer; procedure aTimerTimer(Sender: TObject); procedure TasteUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure vxTimerTimer(Sender: TObject); procedure TasteDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); private counter:Integer; |
Re: gleichmäßige Beschleunigung
Ich hatte mich entschieden das intervall zu vareieren
(oben abebildet die intervalle in einem array geschrieben). |
Re: gleichmäßige Beschleunigung
Delphi-Quellcode:
In Deinem Code wird immer die gesammte Schleife von 1 bis 40 durchlaufen.
if linksklick then
begin for i := 1 to 40 do begin if vxTimer.Interval=vx[i] then begin vxTimer.Interval:=vx[i+1]; if i+1 >21 then begin links:=true; rechts:=false; end else if i+1 < 21 then begin links:=false; rechts:=true ; end else begin links:=false; rechts:=false; end; end; end; Sollte nicht aus diese Schleife ausgestiegen werden wenn der Intervall in dem Array gefunden wurde und das nächste ausgewählt und zugewieden wurde? Ausserdem wird ich diesen Timer danach disablen und erst dann wieder enablen wenn die Kugel den nächsten Schritt getan hat. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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 by Thomas Breitkreuz