end;
end;
{разрушение связанного списка}
destructor objspis.Done;
var
buff:link;
i:integer;
begin
for i:=1 to k do
begin
buff:=list^.next;
dispose(list);
list:=buff;
end;
end;
{Графическая заставка}
procedure zastavka;
var
gd,gm,x,y,x1,y1,dx,dy:integer;
{Фон}
procedure background;
var
x1,y1:integer;
begin
{прорисовка звезд}
setfillstyle(1,1);
for y1:=0 to 10 do
for x1:=0 to 40 do
begin
pieSlice(x1*100,y1*100,30,30,10);
pieSlice(x1*70,y1*60,30,30,10);
end;
{прорисовка плaнеты c кoльцaми}
FillEllipse(550,50,45,40);
Ellipse(550,50,150,388,50,10);
Ellipse(550,50,135,402,60,15);
Ellipse(550,50,125,414,70,20);
{прорисовка сoлнцa}
setfillstyle(1,14);
PieSlice(0,0,0,360,80);
end;
{полет самолета}
procedure sam;
var xq,yq,dxq,dyq:integer;
ch:char;
procedure write_sam(xk,yk:integer);
begin
{прорисовка корпуса}
line(xk-90,yk-45,xk-70,yk-45);
line(xk-90,yk-45,xk-90,yk+15);
line(xk-90,yk+15,xk+45,yk+15);
line(xk+45,yk+15,xk+100,yk);
line(xk-70,yk-45,xk-55,yk-15);
line(xk-55,yk-15,xk+55,yk-15);
line(xk+55,yk-15,xk+100,yk);
setfillstyle(3,2);
floodfill(xk,yk,15);
{прорисовка руля}
line(xk-80,yk-45,xk-80,yk-10);
line(xk-80,yk-10,xk-90,yk-10);
setfillstyle(8,2);
floodfill(xk-85,yk-35,15);
{прорисовка крыльев}
setfillstyle(8,2);
line(xk-15,yk,xk+45,yk);
line(xk-35,yk+50,xk-5,yk+50);
line(xk-15,yk,xk-35,yk+50);
line(xk+45,yk,xk-5,yk+50);
floodfill(xk,yk+20,15);
floodfill(xk,yk+5,15);
line(xk-35,yk-30,xk-5,yk-30);
line(xk-35,yk-30,xk-20,yk-15);
line(xk-5,yk-30,xk+40,yk-15);
floodfill(xk-20,yk-20,15);
line(xk-75,yk,xk-50,yk);
line(xk-85,yk+20,xk-75,yk+20);
line(xk-75,yk,xk-85,yk+20);
line(xk-50,yk,xk-75,yk+20);
floodfill(xk-70,yk+5,15);
floodfill(xk-80,yk+18,15);
{прорисовка кабины}
arc(xk+70,yk-6,0,145,15);
setfillstyle(9,2);
floodfill(xk+72,yk-10,15);
end;
{затирание самолета прямоугольником цвета фона}
procedure del_sam(xk,yk:integer);
begin
setfillstyle(1,0);
bar(xk-90,yk-50,xk+100,yk+50);
end;
{движение по экрану}
procedure dvig_sam(var xk,yk:integer; dxk,dyk:integer);
begin
write_sam(xk,yk);
delay(2000);
del_sam(xk,yk);
xk:=xk+dxk;
yk:=yk+dyk;
end;
begin
background;
xq:=0; yq:=320;
write_sam(xq,yq);
readkey;
dxq:=0; dyq:=0;
repeat
settextstyle(0,0,3);
outtextxy(140,440,'Kibaljuk_Alexei_I361');
dvig_sam(xq,yq,dxq,dyq);
background;
ch:=' ';
if keypressed
then ch:=readkey;
case ch of
#72: if dyq<>-5 then dec(dyq);
#80: if dyq<>5 then inc(dyq);
#75: if dxq<>-5 then dec(dxq);
#77: if dxq<>5 then inc(dxq);
end;
if xq<-5 then dxq:=-dxq;
if yq<0 then dyq:=-dyq;
if xq>680 then xq:=0;
if yq>500 then yq:=0;
until ch=#27;
end;
begin
gd:=9; {тип драйвера-VGA}
gm:=2; {режим работы адаптера-640*480}
x:=700;
y:=350;
dx:=0;
initgraph(gd,gm,''); {инициализация графического режима}
sam;
closegraph; {закрытие графического режима}
end;
{Создание меню}
procedure menu(kurs:integer);
var
y,i:integer;
begin
clrscr;
textcolor(yellow);
gotoXY(23,5);
write('Для работы выберите нужный пункт меню!');
textcolor(lightblue);
gotoXY(24,9);
writeln('╔══════════════════════════╗');
for i:=1 to l do
begin
gotoXY(24,9+i);
writeln('║ ║');
end;
gotoXY(24,15);
writeln('╚══════════════════════════╝');
writeln;
textcolor(yellow);
men[1]:=' Массив ';
men[2]:=' Матрица ';
men[3]:=' Связанный список ';
men[4]:=' Заставка ';
men[5]:=' Выход ';
y:=10;
for i:=1 to l do
begin
gotoXY(25,y);
y:=y+1;
if i=kurs then
textbackground(red)
else
textbackground(black);
write(men[i]);
textbackground(black)
end;
textcolor(white)
end;
{движение курсора в меню}
procedure kursor;
begin
key:=readkey;
if key =#0 then
key:=readkey;
case key of
{нажатие стрелки вниз}
#80: if kurs<l then
kurs:=kurs+1
else
kurs:=1;
{нажатие стрелки вверх}
#72: if kurs>1 then
kurs:=kurs-1
else
kurs:=l;
{нажатие клавиши ENTER}
#13: begin
case kurs of
1: begin
p:=new(ptrobjmas,Init(m)); {ввод массива}
clrscr;
write('Исходный массив:');
p^.OutData; {Вывод исходного массива}
p^.Job; {Обработка массива}
writeln;
write('Полученный массив:');
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.