Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi gleichmäßige Beschleunigung (https://www.delphipraxis.net/85238-gleichmaessige-beschleunigung.html)

Flo.Hoe 27. Jan 2007 20:18


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 ?

Daniel G 27. Jan 2007 20:30

Re: gleichmäßige Beschleunigung
 
Delphi-Quellcode:
 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;
Was bitte ist das?! :shock:

Klaus01 27. Jan 2007 20:34

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;

Flo.Hoe 27. Jan 2007 20:48

Re: gleichmäßige Beschleunigung
 
Ich hatte mich entschieden das intervall zu vareieren
(oben abebildet die intervalle in einem array geschrieben).

Klaus01 27. Jan 2007 21:05

Re: gleichmäßige Beschleunigung
 
Delphi-Quellcode:
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;
In Deinem Code wird immer die gesammte Schleife von 1 bis 40 durchlaufen.
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 14:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz