{ (c) 1998 CREEQ <creeq@web.de> }
program Felder_bewegen;

uses Crt, Graph;

const maxfeld = 25;

type feld = array[1..maxfeld,1..maxfeld] of integer;

var
  a     : feld;
  x,y   : integer;
  enter : char;
  ready : boolean;
begin
  clrscr;
  a[4,5] := 1;
  while not (enter = '@') do
  begin
  y := 1;
  x := 0;
  repeat
    inc (x);
    if x = maxfeld+1 then begin inc (y); x := 1; end;
    if a[x,y] = 0 then begin gotoxy(x,y); write('*'); end;
    if a[x,y] = 1 then begin gotoxy(x,y); write('+'); end;
  until x and y = maxfeld;
  enter := readkey;
  enter := upcase(enter);
  y := 1;
  x := 0;
  ready := false;
  repeat
    inc(x);
    if x = maxfeld+1 then begin inc(y); x := 1; end;
    if a[x,y] = 1 then ready := true;
  until ready;
  case enter of
    'D' : begin if x = maxfeld then dec(x); a[x+1,y] := 1; a[x,y] := 0; end;
    'A' : begin if x = 1 then inc(x); a[x-1,y] := 1; a[x,y] := 0; end;
    'W' : begin if y = 1 then inc(y); a[x,y-1] := 1; a[x,y] := 0; end;
    'S' : begin if y = maxfeld then dec(y); a[x,y+1] := 1; a[x,y] := 0; end;
  end;
  end;
end.


