Я попробовал Geany со своим старым программным кодом, но он отказывается его выполнять.
uses crt,graph;
const
gr_x0=19;
gr_x1=308;
gr_y0=55;
gr_y1=452;
var
p:array[1..20]of pointer;
i:integer;
{/////////// INIT_GRAPH \\\\\\\\\}
PROCEDURE init_graph;
var
drv,mode:integer;
BEGIN
drv:=VGA;
mode:=VGAHI;
initgraph(drv,mode,'c:\bp\bgi');
END;
PROCEDURE save_img;
const
c1=0;
c2=7;
var
size,a,b:word;
BEGIN
setfillstyle(1,10); {ä®}
bar(0,0,getmaxX,getmaxY);
{--- £®«®¢ ¢¯à ¢® ---}
setfillstyle(1,c1);
bar(1,1,3,3);
bar(4,4,9,9);
bar(1,7,3,9);
setfillstyle(1,c2);
bar(1,4,3,6);
{--- £®«®¢ ¢«¥¢® ---}
setfillstyle(1,c1);
bar(23,1,25,3);
bar(17,4,22,9);
bar(23,7,25,9);
setfillstyle(1,c2);
bar(23,4,25,6);
{--- £®«®¢ ¢¨§ ---}
setfillstyle(1,c1);
bar(30,1,38,3);
bar(30,4,35,9);
setfillstyle(1,c2);
bar(33,1,35,3);
{--- £®«®¢ ¢¢¥àå ---}
setfillstyle(1,c1);
bar(40,10,42,12);
bar(43,4,48,9);
bar(46,10,48,12);
setfillstyle(1,c2);
bar(43,10,45,12);
{--- 墮áâ ¢¯à ¢® ---}
setfillstyle(1,c1);
bar(53,7,58,9);
bar(59,4,64,9);
{--- 墮áâ ¢«¥¢® ---}
setfillstyle(1,c1);
bar(72,7,77,9);
bar(66,4,71,9);
{--- 墮áâ ¢¨§ ---}
bar(82,1,84,6);
bar(82,7,87,12);
{--- 墮áâ ¢¢¥àå ---}
bar(98,7,100,12);
bar(95,1,100,6);
{--- ¥¤ ------------}
bar(108,1,110,9);
bar(105,4,113,6);
setfillstyle(1,c2);
bar(108,4,110,6);
{--- £®«®¢ ¢¯à ¢®* ---}
setfillstyle(1,c1);
bar(1,14,3,22);
bar(4,17,6,22);
bar(7,14,9,16);
bar(7,23,9,25);
setfillstyle(1,c2);
bar(1,17,3,19);
{--- £®«®¢ ¢«¥¢®* ---}
setfillstyle(1,c1);
bar(23,14,25,22);
bar(20,17,22,22);
bar(17,14,19,16);
bar(17,23,19,25);
setfillstyle(1,c2);
bar(23,17,25,19);
{--- £®«®¢ ¢¨§* ---}
setfillstyle(1,c1);
bar(30,14,35,19);
bar(36,14,38,16);
bar(36,20,38,22);
bar(27,20,29,22);
setfillstyle(1,c2);
bar(33,14,35,16);
{--- £®«®¢ ¢¢¥àå ---}
setfillstyle(1,c1);
bar(40,23,48,25);
bar(43,20,48,22);
bar(40,17,42,19);
bar(49,17,51,19);
setfillstyle(1,c2);
bar(43,23,45,22);
{--- ⥫® £®à¨§®â «ì®¥ ---}
setfillstyle(1,c1);
bar(53,17,64,22);
setfillstyle(1,c2);
bar(59,17,61,19);
bar(56,20,58,22);
{--- ⥫® ¢¥à⨪ «ì®¥ ---}
setfillstyle(1,c1);
bar(69,14,74,25);
setfillstyle(1,c2);
bar(69,17,71,19);
bar(72,20,74,22);
{--- ¨§£¨¡ ¢¢¥àå-¢¯à ¢® ---}
setfillstyle(1,c1);
bar(85,17,90,22);
bar(82,20,87,25);
setfillstyle(1,c2);
bar(85,20,87,22);
{--- ¨§£¨¡ ¢¯à ¢®-¢¨§ ---}
setfillstyle(1,c1);
bar(92,17,97,22);
bar(95,20,100,25);
setfillstyle(1,c2);
bar(95,20,97,22);
{--- ¨§£¨¡ ¢«¥¢®-¢¢¥àå ---}
setfillstyle(1,c1);
bar(108,14,113,19);
bar(111,17,116,22);
setfillstyle(1,c2);
bar(111,17,113,19);
{--- ¨§£¨¡ ¢¨§-¢«¥¢® ---}
setfillstyle(1,c1);
bar(121,14,126,19);
bar(118,17,123,22);
setfillstyle(1,c2);
bar(121,17,123,19);
{***** á®åà ¥¨¥ *******}
a:=0;
b:=0;
for i:=1 to 20 do
begin
if i=10 then begin a:=0;b:=13;end;
size:=imagesize(1+a,1+b,12+a,12+b);
getmem(p,size);
getimage(1+a,1+b,12+a,12+b,p^);
a:=a+13;
end;
END;
PROCEDURE fon;
BEGIN
setfillstyle(1,11);
bar(0,0,getmaxX,getmaxY);
setfillstyle(1,10);
bar(gr_x0,gr_y0,gr_x1,gr_y1);
setcolor(1);
rectangle(gr_x0,gr_y0,gr_x1,gr_y1);
END;
PROCEDURE start_game;
var
d:array[1..500]of record
x,y:word;
m:byte;
end;
max_d:word; {¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ í«¥¬¥â®¢}
flag_exit,flag_eda:boolean;
k:char;
tmp_m,speed:byte;
eda_x,eda_y:word;
BEGIN
randomize;
speed:=70;
max_d:=4;
for i:=max_d downto 1 do
begin
d.x:=gr_x0+1+12*(i-1);
d.y:=gr_y0+1;
d.m:=1;
end;
flag_eda:=false;
flag_exit:=false;
{*****************************************************************}
repeat
{---- ®â®¡à §¨âì ¥¤ã -------------------------------------}
if flag_eda=false then
begin
repeat
flag_eda:=false;
eda_x:=gr_x0+1+12*random(round((gr_x1-gr_x0)/12));
eda_y:=gr_y0+1+12*random(round((gr_y1-gr_y0)/12));
for i:=max_d downto 1 do
if (d.x=eda_x)and(d.y=eda_y) then flag_eda:=true
until flag_eda=false;
putimage(eda_x,eda_y,p[9]^,normalput);
flag_eda:=true;
end;
{---------------------------------------------------------}
{----- ª« ¢ ---------------------------------------------}
if keypressed then
case readkey of
#0: begin
k:=readkey;
if (k=#77)and(d[1].m<>2) then d[1].m:=1;
if (k=#80)and(d[1].m<>4) then d[1].m:=3;
if (k=#75)and(d[1].m<>1) then d[1].m:=2;
if (k=#72)and(d[1].m<>3) then d[1].m:=4;
end;
#27: flag_exit:=true;
end;
delay(speed);
{---------------------------------------------------------}
{----- ¨§¬¥¥¨¥ ¯®§¨æ¨© (¤ ë¥) ------------------------}
for i:=max_d downto 2 do d:=d[i-1];
case d[1].m of
1: if d[1].x+12>gr_x1-12 then d[1].x:=gr_x0+1 else d[1].x:=d[1].x+12;{¢¯à ¢®}
3: if d[1].y+12>gr_y1-12 then d[1].y:=gr_y0+1 else d[1].y:=d[1].y+12;{¢¨§ }
2: if d[1].x-12<gr_x0+1 then d[1].x:=gr_x1-12 else d[1].x:=d[1].x-12; {¢«¥¢® }
4: if d[1].y-12<gr_y0+1 then d[1].y:=gr_y1-12 else d[1].y:=d[1].y-12; {¢¢¥àå }
end;
{---------------------------------------------------------}
{áꥤ ¥â}
if (d[1].x=eda_x)and(d[1].y=eda_y) then
begin
inc(max_d);
flag_eda:=false;
end;
{---- ®â®¡à ¦¥¨¥ íªà ¥ á ®¢ë¬¨ ¯®§¨æ¨ï¬¨ -----------}
if (d[1].x+12=eda_x)and(d[1].y=eda_y)and(d[1].m=1) or
(d[1].x-12=eda_x)and(d[1].y=eda_y)and(d[1].m=2) or
(d[1].x=eda_x)and(d[1].y+12=eda_y)and(d[1].m=3) or
(d[1].x=eda_x)and(d[1].y-12=eda_y)and(d[1].m=4) then
putimage(d[1].x,d[1].y,p[9+d[1].m]^,normalput) else
putimage(d[1].x,d[1].y,p[d[1].m]^,normalput);
for i:=max_d-2 downto 2 do
begin
if d.m<=2 then tmp_m:=14 else tmp_m:=15;
if (d.m=3)and(d[i+1].m=1)or(d.m=2)and(d[i+1].m=4) then tmp_m:=17;
if (d.m=2)and(d[i+1].m=3)or(d.m=4)and(d[i+1].m=1) then tmp_m:=19;
if (d.m=4)and(d[i+1].m=2)or(d.m=1)and(d[i+1].m=3) then tmp_m:=18;
if (d.m=1)and(d[i+1].m=4)or(d.m=3)and(d[i+1].m=2) then tmp_m:=16;
putimage(d.x,d.y,p[tmp_m]^,normalput)
end;
putimage(d[max_d-1].x,d[max_d-1].y,p[4+d[max_d-1].m]^,normalput);
putimage(d[max_d].x,d[max_d].y,p[20]^,normalput);
{---------------------------------------------------------}
delay(speed);
until flag_exit;
END;
BEGIN
init_graph;
save_img;
fon;
start_game;
closegraph;
END.