- procedure TForm1.Ballbewegung(t: real);
- var Kollision: real;
- begin
- // Kollisionszeitpunkte ausrechnen
- if (BallRi.y <> 0) then
- Kollision := (20 - BallPos.Y) / BallRi.Y
- else
- Kollision := t;
- if (BallRi.Y <> 0) then
- Kollision := (-20 - BallPos.Y) / BallRi.Y
- else
- Kollision := t;
- if (BallRi.X <> 0) then
- Kollision := (s1 - BallPos.X) / BallRi.X
- else
- Kollision := t;
- if (BallRi.X <> 0) then
- Kollision := (s2 - BallPos.X) / BallRi.X
- else
- Kollision := t;
- if Kollision < t then
- begin
- // Bewegung zur Kollision
- BallPos.Y := BallPos.Y + Kollision * BallRi.Y;
- BallPos.X := BallPos.X + Kollision * BallRi.X;
- // Kollision durchführen
- BallRi.Y := -BallRi.Y;
- end;
- // Normal weiterbewegen
- BallPos.Y := BallPos.Y + t * (0.1+BallRi.Y);
- BallPos.X := BallPos.X + t * (0.1+BallRi.X);
- end;