Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#15

Re: Simple Pong

  Alt 28. Feb 2006, 11:23
Delphi-Quellcode:
// Die Prüffunktion
function OverlapRect(const Rect1, Rect2: TRect): Boolean;
begin
  Result :=
    (Rect1.Left <= Rect2.Right) and
    (Rect1.Right >= Rect2.Left) and
    (Rect1.Top <= Rect2.Bottom) and
    (Rect1.Bottom >= Rect2.Top);
end;
Delphi-Quellcode:
  // Die Überprüfung ob sich ein Rechteck in/ über einem anderem befindet
  if OverlapRect( // Ball bei/über Schl. 1 ?
    Rect(Ball.X, Ball.Y, Ball.X + Ball.Bmp.Width, Ball.Y + Ball.Bmp.Height),
    Rect(Schl1.X, Schl1.Y, Schl1.X + Schl1.Bmp.Width, Schl1.Y + Schl1.Bmp.Height)
    ) or
    OverlapRect( // Ball bei/über Schl. 2 ?
    Rect(Ball.X, Ball.Y, Ball.X + Ball.Bmp.Width, Ball.Y + Ball.Bmp.Height),
    Rect(Schl2.X, Schl2.Y, Schl2.X + Schl2.Bmp.Width, Schl2.Y + Schl2.Bmp.Height)
    ) then
  begin
    // Abprallen lassen / also einfach die Richtung umkeren.
    // Das Random ist dazu da, dass der winkel nicht immer gleich ist
    // sonst könnte man die Schläger an einer passenden Stelle belassen
    // und der ball würde immer wieder die selbe Schtrecke benutzen
    vx := vx * -1 -(1+random(2));
    vy := vy * -1 -(1+random(2));
  end;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat