Naja. Das ist ja nur halbes Pathfinding würde ich sagen... Wenn du da Hindernisse einbauen möchtest, und bei deinem Ansatz bleiben möchtest, musst du doch einfach nur die 'if' Teile in den Timern/OnKeyDown ändern, so dass sich weder Kreis noch Kasten über andere Dinger (=Hindernisse) drüber bewegen können? Vielleicht die Hindernisse in einem Array/Liste merken (im OnCreate alle erstellen und in die Liste packen) und dann einfach bei jeder Bewegung die Liste iterieren, und schauen, ob die neue Koordinate erlaubt ist, oder nicht.
Echtes Pathfinding (okay, bin da auch nur ein 'Idiot', aber A-Stern kenne ich) sieht für mich anders aus, das beinhaltet am Ende dann nicht nur "Da darf ich hin" und "Da darf ich nicht hin", sondern noch Abstufungen dazwischen. Anstatt von "Frei" und "Wand" gibt es dann vielleicht noch sowas wie "Schlamm" oder "nächstes Feld geht bergauf, deshalb dauert es länger und ist ein schlechterer Weg", wo nur drüber gegangen wird, wenn man damit schneller wäre, als wenn man den Weg über "Frei" wählt..
Dieser Ansatz mit den Timern ist nicht gerade optimal und macht auf lange Sicht nicht glücklich. Wenn man mal ein bisschen rumfrickeln will und wie hier nur "Wand" und "Frei" hat geht das vielleicht noch, spätestens wenn das Spiel dann flüssig laufen soll, es "Wand", "Frei" und "Schlamm"/"Bergauf" gibt und man nicht nur
VCL, sondern was anderes (z.B. Andorra2D-Engine) benutzt, kann man sich wohl davon verabschieden..
Sprich: Wenn du hier nur experimentieren willst, ist das okay, aber wenn du auf lange Sicht mehr willst, solltest du das Konzept ändern..
LG