Написал программу "змейку" при выходе из программы выдавалась ошибка exitcode=201 потом мне помогли ее найти
for i:=1 to 15 do if (iz[i]
iz - это тип tzmey, а в массиве tzmey последний элемент - 14, а я пытался прочитать пятнадцатый. как видите я уменьшил цикл до 14 .... ошибка вроде не выдается , но и змейка не совершает движения ((((( mey последний элемент - 14, а Вы пытаетесь прочитать пятнадцатый.
uses crt,Graph; type tzmey=array[0..14] of integer; const left=#75; up=#72; esc=#27; Right=#77; Down=#80; n=31; m=16; Var pole:array[0..n,0..m] of integer; {игровое поле} izk,jzk,iz,jz:tzmey; {Массивы для определения положения змейки} ch:char; ochki,dx,dy,nx,ny,gd,gm:integer; {-----------------Создания змейки--------------} procedure createzmey; {Вначале змейка имеет длину 4 клетки} Var i:integer; begin for i:=0 to 14 do if i<=3 then Begin iz[i]:=4; jz[i]:=8+i; end else begin iz[i]:=0; jz[i]:=0; end; end; {Процедура создает массив, отображающий игровое поле} Procedure create_pole; var k,i,j:integer; begin for i:=0 to n do for j:=0 to m do if (j=0) or (i=n) or (j=m) or (i=0) then pole[i,j]:=-1 {Края поля обозначены -1} else pole[i,j]:=0; k:=0; repeat {Расстановка яблок} i:=random(n-2)+1; j:=random(m-2)+1; if (pole[i,j]=0) and (i<>4) and (abs(pole[i-1,j])<>1) and (abs(pole[i,j])<>1) and (abs(pole[i,j-1])<>1) and (abs(pole[i,j+1])<>1) then begin pole[i,j]:=1; k:=k+1; end; until k=11; end; {--------------Рисование змеи в начальном положении--------} procedure drawzmey; var i,x,y:integer; begin setfillstyle(1,12); for i:=0 to 14 do if (iz[i]>0) and (iz[i]>0) then {Рисуем активные поля не заполненые нулями} begin x:=nx+jz[i]*dx; y:=ny+iz[i]*dy; bar(x,y,x+dx,y+dy); end; end; {-------------Рисуем игровое поле-------} Procedure Drawpole; var i,j:integer; x,y:integer; begin For i:=0 to n do For j:=0 to m do Begin x:=j*dx+nx; y:=i*dy+ny; case pole[i,j] of 0:begin{Поле} Setcolor(1); setfillstyle(1,0); bar(x,y,x+dx,y+dy); rectangle(x,y,x+dx,y+dy); end; -1:begin{Стенка} setfillstyle(1,White); bar(x,y,x+dx,y+dy); end; 1:begin {Яблоки} setfillstyle(1,14); bar(x,y,x+dx,y+dy); end; end; end; end; {-----------Вывод очков на экран----------------} procedure schet(xw,yw,n:integer); var s:string; begin setfillstyle(1,1); bar(xw,yw,xw+40,yw+20); setcolor(14); settextstyle(0,0,1); str(n,s); outtextxy(xw+5,yw+5,s); end; {-----------Движение змеи--------} procedure movezmey; var i,kz,hi,hj,x,y:integer; stop:boolean; {---------Реализация поворотов змеи------} procedure rul; begin ch:=readkey; if ch=#0 then begin ch:=readkey; case ch of left:if hj=0 then begin hi:=0; hj:=-1; end; right:if hj=0 then begin hi:=0; hj:=1; end; up:if hi=0 then begin hi:=-1; hj:=0; end; down:if hi=0 then begin hi:=1; hj:=0; end; end; end; end; begin hi:=0; hj:=-1; {Шаги п строчкам и столбцам} kz:=3; {Конец змеи. Он будет увеличиваться при съедании яблок} stop:=false; repeat setfillstyle(1,0); {Стираем последнее звено змеи}; x:=nx+jz[kz]*dx; y:=ny+iz[kz]*dy; bar(x,y,x+dx,y+dy); setcolor(1); rectangle(x,y,x+dx,y+dy); izk:=iz; jzk:=jz; for i:=1 to kz do {Сдвигаем все хвенья, кроме первого} begin iz[i]:=izk[i-1]; jz[i]:=jzk[i-1]; end; if keypressed then rul; {Поворот} iz[0]:=iz[0]+hi; {Новое положение первого звена} jz[0]:=jz[0]+hj; setfillstyle(1,12); x:=nx+jz[0]*dx; y:=ny+iz[0]*dy; bar(x,y,x+dx,y+dy); if pole[iz[0],jz[0]]=1 then {Если в этой клетке яблоко} begin kz:=kz+1; {Удлиняем змею} ochki:=ochki+10; schet(500,10,ochki); end; for i:=1 to 14 do if (iz[i]=iz[0]) and (jz[i]=jz[0]) then stop:=true;{Если змея попала в себя} delay(30000); until (pole[iz[0],jz[0]]=-1) or (ch=esc) or stop or (kz=14);{Условия окончания игры: попали в стенку или нажали esc или попали в себя или собрали все яблоки} end; {-----------------------Главная прогрмма-----------} begin gd:=d4bit; gm:=m800x600; initgraph(gd,gm,''); randomize; ochki:=0; dx:=15; dy:=15; nx:=20; ny:=0; {Размеры} create_pole; createzmey; drawpole; drawzmey; readkey; movezmey; readln; closegraph; end.