Mrówka Langtona

0

Moim zadaniem jest napisanie programu Mrówka Langtona. W sumie to wszystko działa dobrze do pewnego momentu. w 1042 kroku program wywala błąd:
//Project My Application raised exception class 'External: SIGSEGV'.
In file 'project1.lpr' at line 84:
case p[pX,pY] of//

To jest ta procedura:

   procedure RUSZ_MROWKE(var p: Tplansza; var pX,pY: integer; var obr: char; var kr: integer);
   begin
     inc(kr);
     // sprawdzanie błędu...
     if (pX>high(p)) or (pY>high(p[1])) then
     begin
       gotoXY(1,25);
       writeln('pX=',pX,' pY=',pY,' obrot=',obr,' kroki=',kr);
     end;


     case p[pX,pY] of
       false: MROWKA_W_LEWO(pX,pY,obr);
       true:  MROWKA_W_PRAWO(pX,pY,obr);
     end;

     p[pX, pY]:=not p[pX, pY];
   end;

zmienne w tym momencie:
pX = 16777237
pY = 4
kroki = 1042
obrot = w prawo

W załączniku cały kod programu.
Proszę o pomoc w usunięciu tego błędu.

1

Wychodzisz poza zakres tablicy pewnie gdzieś.

2

if (pX>high(p)) or (pY>high(p[1])) or (pX<low(p)) or (pY<low(p[1])) then

Poza tym:
const
LY=1;
HY=20;
LX=1;
HY=20;
type
TYSize=LY..HY;
TXSize=LX..HX;
Tplansza = array[TYSize,TXSize] of boolean;
i wszędzie zamiast high(p) używasz HY; zamiast low(p[...]) - HX

1 użytkowników online, w tym zalogowanych: 0, gości: 1