Als Welt könntest du ein 2DArray of Boolean benutzen. Wenn dein Gegner dann in einem Feld steht, kannst du recht einfach einen Zufallszug ausführen lassen:
Delphi-Quellcode:
// Gegner steht in A(x,y):
cnt :=0;
possible = array[8] of TPoint
for i in [-1,0,1] do
for j in [-1,0,1] do
if i==j and j==0 do continue;
if A[x+i,y+j] do
cnt := cnt+1;
possible[cnt]=(x+i,y+j); // eine Liste der Zugmöglichkeiten wird erstellt:
// Ein true-Feld im Array steht für eine betrerbare Fläche, false für eine Wand.
// jetzt weisst du also, in welche Richtungen du laufen kannst.
Gegner.laufeNach(possible(random(cnt)))
Jetzt kannst du z.B. mit einem Timer die Figur langsam zur nächsten Zelle bewegen und sobald sie dort angekommen ist, wieder diesen Code ausführen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.