Wenn Left < 0 oder (Left + Width) > Form.ClientWidth wird, Richtung umkehren, das Gleiche analog für die Y-Achse.
So?
Delphi-Quellcode:
// Obere Grenze prüfen
if ntop > ( 0 + k.Height ) then
begin
k.speedy := - k.speedy; // Richtung umdrehen
end;
// Linke Grenze prüfen
if nleft < ( 0 + k.Width ) then
begin
k.speedx := - k.speedx; // Richtung umdrehen
end;
Weil jetzt bewegt es sich nurnoch in x richtung und wackelt hin und her.