Witam,
poniższy kod robi:

i w zależności od kierunku (awsd), puste pole nazwijmy je pionkiem, ma się przesunąć,

Poniższy kod ma błąd. Wytłumaczcie mi proszę, dlaczego pionek idzie tylko w lewo i w górę, a nie idzie w dół i prawo gdzie indeks musi być zwiększony. Bo nie mogę zrozumieć - przecież aktualizuje tablice - pole[i+1] powinna zaktualizować pole[6], tak jak pole[i-1] aktualizuje pole[4] (mówiąc o pierwszym ruchu).

program snake;

uses crt;

var
 znak:char;
 pole:array[1..9] of string;
 i:integer;

label
 kotwica;
Begin

for i:=1 to 9 do
begin
 if i=5 then
  pole[i]:=' '
 else
  pole[i]:='#';
end;

kotwica:
clrscr;

write(pole[1]); write(pole[2]); writeln(pole[3]);
write(pole[4]); write(pole[5]); writeln(pole[6]);
write(pole[7]); write(pole[8]); writeln(pole[9]);

 znak:=readkey;

 if znak='p' then halt; { stop }

 if znak='w' then { w gore }
 begin
  for i:=1 to 9 do
  if pole[i]=' ' then
  begin
   pole[i]:='#';
   pole[i-3]:=' ';
  end;
 end;

  if znak='d' then  { w prawo }
 begin
  for i:=1 to 9 do
  if pole[i]=' ' then
  begin
   pole[i]:='#';
   pole[i]:=' ';
  end;
 end;

  if znak='a' then   { w lewo }
 begin
  for i:=1 to 9 do
  if pole[i]=' ' then
  begin
   pole[i]:='#';
   pole[i-1]:=' ';
  end;
 end;

  if znak='s' then  { w dol }
 begin
  for i:=1 to 9 do
  if pole[i]=' ' then
  begin
   pole[i]:='#';
   pole[i+3]:=' ';
  end;
 end;

 goto kotwica;

End.