Iv tried implementing this into my system but it does not seem to work.

e.g.

procedure TForm1.Timer1Timer(Sender: TObject);
const
JITTER = 5;
begin
Randomize;
Inc(JumpHoriz, Random(JITTER) - ((JITTER - 1) div 2));
Inc(JumpVert, Random(JITTER) - ((JITTER - 1) div 2));
// this i believe is before the collision detecting takes place
// its probably very obvious to the delphi orientated and iv probably put it in the wrong place, but im still a true newbie! sorry
if (Circle.Left > (Form1.ClientWidth - Circle.Width))
or (Circle.Left <0)
then

begin
JumpHoriz:= -JumpHoriz;

end;
if (Circle.Top > (Form1.ClientHeight - Circle.Height))
or (Circle.Top < 0)
then

begin
JumpVert:= -Jumpvert;

end;
Circle.Left:= Circle.Left+JumpHoriz;
Circle.Top:= Circle.Top+Jumpvert;

end;