Как сделать обход препятствий в С++ Builder?

Как сделать обход препятствий в С++ Builder???
Движение игрока по клику мыши уже готово.
Вот мой код:

void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
int X, int Y)
{
x=X;
y=Y;
Timer1->Enabled=true;
}

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (Image1->Top>y) Image1->Top=Image1->Top-1;
if (Image1->Top<y) Image1->Top=Image1->Top+1;
if (Image1->Left>x) Image1->Left=Image1->Left-1;
if (Image1->Left<x) Image1->Left=Image1->Left+1;
if (Image1->Top==y && Image1->Left==x) Timer1->Enabled=false;
}

Из этого кода сложно что-либо понять о задаче.

Чет мне кажется что это не самая тривиальная задача…