Wie beschrieben: es ist die Kollisionsabfrage inclusive der Vektoränderung. Ich kommentiere es einfach mal, vielleicht hilft es Dir ja.
Delphi-Quellcode:
[...]
var
//dies ist dein Geschwindigkeitsvektor mit .x und .y Eigenschaft.
geschwindigkeit:tpoint;
[...] //deine restlichen Abfragen/Prozedurabläufe
//falls der Ball außerhalb deines Spielfeldes ist (links oder rechts),
//dann wird der Geschwindigkeitsvektor negiert, das heißt, er bewegt
//sich von dort an in die andere x-Richtung, "prallt also ab"
if (ball.left<feld.left) or (ball.left>feld.width+feld.left-ball.width) then geschwindigkeit.x:=-geschwindigkeit.x;
//und gleich nochmal für die y-Koordinaten
if (ball.top<feld.top) or (ball.top>feld.height+feld.top-ball.height) then geschwindigkeit.y:=-geschwindigkeit.y;
[...] //Darstellung etc.