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.