Exit code 1 - Free Pascal
Формулировка задачи:
Имеется программка с меню и графикой. Компилируется нормально, но при запуске выдает exit code 1. Как с ним справиться?
uses graph,crt;
type mas=array[1..4,1..4] of integer;
var ch:char;
a:mas;
gd,gm,xkursor,ykursor,i,j,xzas,yzas,dxzas,dyzas,b,c:integer;
p2048,menu,kmenu,helpkar,game12,proigral,win:pointer;
function loader(filename:string):pointer;
var sz:longint;
p:pointer;
f:file;
begin
assign(f,filename);
reset(f,1);
sz:=filesize(f);
getmem(p,sz);
blockread(f,p^,sz);
close(f);
loader:=p;
end;
procedure upr (var ch:char;var xkursor,y:integer);
begin
ch:=readkey;
putimage(xkursor,y,kmenu^,xorput);
if ch=#0 then ch:=readkey;
case ch of
#72: if y>99 then y:=y-220;
#80: if y<550 then y:=y+220;
end;
if y>545 then y:=100;
if y<100 then y:=540;
putimage(xkursor,y,kmenu^,xorput);
end;
function proverka(a:mas): boolean;
var i,j,k,z:integer;
begin
proverka:=true;
for i:=1 to 4 do
for j:=1 to 4 do
if (a[i,j] = 0) then proverka:=false else
for k:=2 to 3 do
for z:= 2 to 3 do
if (a[k,z] = a[k+1,z]) or (a[k,z] = a[k-1,z]) or (a[k,z] = a[k,z-1]) or
(a[k,z] = a[k,z+1]) then
proverka:=false
else if ((a[1,j] = a[2,j]) or (a[2,j] = a[3,j]) or
(a[3,j] = a[4,j])) or ((a[i,1] = a[i,2]) or (a[i,2] = a[i,3]) or
(a[i,3] = a[i,4])) then proverka:=false;
end;
procedure gg(a:mas);
var
i,j:integer;
begin
for i:=1 to 4 do
for j:=1 to 4 do
if a[i,j] = 2048 then
begin
cleardevice;
putimage(0,0,win^,xorput);
end;
end;
procedure zastavka(var xzas,yzas,dxzas,dyzas:integer);
begin
putimage(xzas,yzas,p2048^,xorput);
xzas:=xzas+dxzas;
yzas:=yzas+dyzas;
if (xzas>getmaxx-100) then dxzas:=-dxzas;
if (xzas<0) then dxzas:=-dxzas;
putimage(xzas,yzas,p2048^,xorput);
if (yzas>getmaxy-100) then dyzas:=-dyzas;
if (yzas<0) then dyzas:=-dyzas;
settextstyle(1,1,1);
outtextxy(0,getmaxy-20,'Game created: Podlesny Ilya');
delay(30);
end;
procedure game;
var
f:text;
l,i,n,c,m1,m2,h,z,LoshadCount:Integer;
max:Real;
v:array[1..7] of integer;
s:array[1..7] of real;
begin
begin
clrscr;
l:=0;
Randomize;
LoshadCount:=Random(6)+2;
z:=Random(5)+3;
m1:=Random(4)+2;
m2:=Random(5)+6;
begin
assign(f,'C:\Users\iDeathless\Desktop\data Racecourse\Input.txt');
rewrite(f);
write(f,m1);
write(f,m2);
close(f);
end;
for h:=1 to z do
begin
// Stavki
Randomize;
LoshadCount:=Random(6)+2;
n:=0;
repeat
write('Vibirite loshad (ot 1 do ', LoshadCount,'): ');
readln(n);
until n in [1..LoshadCount];
// Zaezd
Randomize;
for i:=1 to LoshadCount do
s[i]:=round(Random(m2-m1+1)+m1)*7;
// Finish
max:=s[1];
for i:=2 to LoshadCount do
if s[i]>max then max:=s[i];
c:=0;
for i:=1 to LoshadCount do
if s[i]=max then begin
Inc(c);
v[c]:=i;
end;
if c=1 then begin
c:=v[1];
end
else begin
// Fotofinish
max:=max+0.001;
c:=Random(c)+1;
c:=v[c];
s[c]:=max;
end;
// Resultat
Writeln;
Writeln ('--------------------');
Writeln (' Sredniya');
Writeln ('Loshad skorost, Resultat');
Writeln (' km/ch');
Writeln ('--------------------');
for i:=1 to LoshadCount do begin
Write (' ', i, s[i]:15:3);
if i=c then Write (' POBEDITEL');
Writeln();
end;
Writeln ('--------------------');
Writeln;
if c=n then
begin
Writeln ('VI VIIGRALI !!!');
l:=l+1;
end
else
Writeln ('Vi proigrali');
Readln;
clrscr;
end;
end;
begin
assign(f,'C:\Users\iDeathless\Desktop\data Racecourse\Output.txt');
rewrite(f);
write(f,l);
write(f,z);
close(f);
end;
end;
procedure help;
begin
cleardevice;
putimage(0,0,helpkar^,xorput);
readkey;
end;
begin
gd:=detect;
b:=9;
c:=11;
initgraph(b,c,'');
randomize;
menu:=loader('buhf/menu2.bmp');
kmenu:=loader('buhf/kursor.bmp');
helpkar:=loader('buhf/help1.bmp');
p2048:=loader('buhf/2048.bmp');
game12:=loader('buhf/game12.bmp');
proigral:=loader('buhf/pr5.bmp');
win:=loader('buhf/win.bmp');
xzas:=random(getmaxx div 2);
yzas:=random(getmaxy div 2);
dxzas:=random(10)+20;
dyzas:=random(10)+20;
putimage(xzas,yzas,p2048^,xorput);
repeat
zastavka(xzas,yzas,dxzas,dyzas);
until keypressed;
readkey;
repeat
xkursor:=400;
ykursor:=100;
cleardevice;
putimage(0,0,menu^,xorput);
putimage(xkursor,ykursor,kmenu^,xorput);
repeat
upr(ch,xkursor,ykursor);
until ch=#13;
case ykursor of
100:game;
320:help;
end;
until ykursor=540;
end.Решение задачи: «Exit code 1»
textual
Листинг программы
putimage(xzas,yzas,p2048^,xorput); repeat zastavka(xzas,yzas,dxzas,dyzas); until keypressed; readkey;