![]() |
Re: Ball bewegen mit Timer(Ball=Canvas darstellung)
Ich glaub eindeutigere Variablenbezeichner helfen den meisten hier mehr... zudem verrät eine .exe nur wenig über den Source
|
Re: Ball bewegen mit Timer(Ball=Canvas darstellung)
Ich glaub worum es geht ist diese procedur:
Delphi-Quellcode:
Ach übrigens die oberen y werte sind von den schlägern.
procedure TForm1.Idle(Sender: TObject; var Done: Boolean);
begin done := false; if Gettickcount-LastStep > 1 then // = <1> Schritte pro millisekunde begin if unten then if y+H < ClientHeight-10 then begin y := y+StepWidth; Repaint; end; if oben then if y >= ClientHeight-470 then begin y := y-StepWidth; Repaint; end; if unten1 then if y1+H < ClientHeight-10 then begin y1 := y1+Stepwidth; Repaint; end; if oben1 then if y1 >= ClientHeight-470 then begin y1 := y1-StepWidth; Repaint; end; if (Ellipsex2 >= ClientHeight-470) or (Ellipsex3 >= ClientHeight-470) then begin Ellipsex2:= Ellipsex2+Geschwx4; Ellipsex3:= Ellipsex3+Geschwx4; Repaint; end; if (Ellipsey2 >= ClientHeight-10) or (Ellipsey3 >= ClientHeight-10) then begin Ellipsey2:= Ellipsey2+Geschwy4; Ellipsey3:= Ellipsey3+Geschwy4; Repaint; end; Ellipsex2 := Ellipsex2 + 3; Ellipsey2 := Ellipsey2 + 3; Ellipsex3 := Ellipsex3 + 3; Ellipsey3 := Ellipsey3 + 3; // wenn oben oder unten angekommen soll er Richtung wechseln if (Ellipsey2 <= 0 ) or (Ellipsey2 >= Form1.ClientHeight) or (Ellipsey3 <= 0 ) or (Ellipsey3 >= Form1.ClientHeight) then begin Ellipsey2 := -Ellipsey2; Ellipsey3 := -Ellipsey3; end; //wenn rechts oder links angekommen soll er Richtung Richtung wechseln if (Ellipsex2 <= 0 ) or (Ellipsex2 >= Form1.ClientWidth) or (Ellipsex3 <= 0 ) or (Ellipsex3 >= Form1.ClientWidth) then begin Ellipsex2 := -Ellipsex2; Ellipsex3 := -Ellipsex3; end; end; LastStep := gettickcount; end; Und hier die Vereinbarung:
Delphi-Quellcode:
const
H = 90; B = 15; StepWidth = 10; Geschwx4 = 3; Geschwy4 = 3; implementation {$R *.dfm} function KeyPressed(Key: Integer): Boolean; begin KeyPressed := (GetAsyncKeyState(Key) and $8000 <> 0); end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := Idle; x := 30; y := 100; x1 := 500; y1 := 100; doublebuffered := true; Ellipsex2 := 250; Ellipsey2 := 260; Ellipsex3 := 270; Ellipsey3 := 280; Timer1.Enabled := True; end; Ich hoffe das man jetzt mehr rauslesen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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-2025 by Thomas Breitkreuz