Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
Delphi 6 Personal
|
Re: Simple Pong
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;
|
|
Zitat
|