Dir hat man doch schon eine komplette Lösung gegeben. 2D mit vier Richtungen ist doch der einfachste Fall. Du hast die Position des Spielers und Du hast ein Signal in welche Richtung er gehen will. Will dieser nach Links gehen, prüfst Du, ob das entsprechende Feld begehbar ist oder nicht. Dies kann halt entweder ein Boolean sein oder auch ein Integer (z.B. wenn gewisse Einheiten einige Felder nicht überqueren dürfen). Wird dieses Feld als begehbar gekennzeichnet, wird dies die neue Position des Spielers. Ansonsten wird der Tastendruck verworfen und nicht verarbeitet... oder der Rechner piept nervig oder sowas.
Pseudo
Delphi-Quellcode:
a[0,0] := true;
// hinderniss
px := 1;
py := 0;
if leftKey
then
begin
if not a[px-1,py]
then dec(px);
end;
//ergo: dec(px) wird nicht ausgeführt
[...]