Einzelnen Beitrag anzeigen

Andy1988

Registriert seit: 20. Dez 2006
Ort: Langen (Hessen)
7 Beiträge
 
#12

Re: Ball bewegen mit Timer(Ball=Canvas darstellung)

  Alt 21. Dez 2006, 19:16
Ich glaub worum es geht ist diese procedur:
Delphi-Quellcode:
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;
Ach übrigens die oberen y werte sind von den schlägern.


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.
Lebe so wie du willst und programmiere so wie du willst, aber du trägst die Verantwortung.
  Mit Zitat antworten Zitat