Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
listing_2003_7.doc
Скачиваний:
8
Добавлен:
01.07.2025
Размер:
233.98 Кб
Скачать

4.2. Организация движения с использованием динамической памяти

Задание 4.2.1. Нарисовать телевизор, транслирующий программу передач о животном мире. Выпуск посвящен рыбам, и поэтому по экрану телевизора перемещается небольшая рыбка. Зрителю видно, что она сначала движется слева направо, затем в обратную сторону, при этом меняются горизонтальные уровни перемещения (рыбка плывет то вдоль верхнего края экрана, то посередине, то вдоль нижнего края экрана). Сначала в верхнем левом углу рисуется рыбка и ее зеркальное отражение относительно вертикали. Затем изображения помещаются в разделы памяти, откуда потом извлекаются и размещаются в разных точках экрана, определяемых координатами х и у.

uses

graph, crt;

const

y=150;

x=150;

var

err, gd, gm: integer;

p, p1:pointer;

begin

gd:=vga;

gm:=vgahi;

initgraph(gd, gm, 'd:\bp\bgi');

err:=graphresult;

if err<>grok then

begin

writeln('Ошибка открытия графики');

halt(1)

end;

randomize;

ellipse(50, 35, 0, 360, 20, 7); {Рыба1}

arc(50, 35, 320, 30, 10);

line(30, 33, 20, 25);

line(30, 37, 20, 45);

line(20, 45, 20, 25);

circle(65, 35, 1);

setfillstyle(1, 13);

floodfill(23, 40, 15);

setfillstyle(1, 12);

floodfill(50, 35, 15);

setfillstyle(1, 0);

getmem(p, 1800);

getimage(15, 20, 75, 50, p^);

ellipse(150, 35, 0, 360, 20, 7); {Зеркальное отражение рыбы1}

arc(130, 35, 330, 40, 10);

line(170, 33, 180, 25);

line(170, 37, 180, 45);

line(180, 45, 180, 25);

circle(135, 35, 1);

setfillstyle(1, 13);

floodfill(175, 35, 15);

setfillstyle(1, 12);

floodfill(150, 35, 15);

setfillstyle(1, 0);

getmem(p1, 1800);

getimage(126, 22, 183, 47, p1^);

cleardevice;

bar3d(150, 150, 370, 290, 30, topon); {Телевизор}

line(270, 135, 200, 100); {Антенна}

line(270, 135, 340, 100);

circle(200, 100, 3);

circle(340, 100, 3);

repeat

while x<300 do

begin

x:=x+2;

setfillstyle(1, 11);

floodfill(369, 169, 15);

putimage(x, y, p^, xorput);

delay(450);

putimage(x, y, p^, xorput)

end;

while x>150 do

begin

x:=x-2;

setfillstyle(1, 11);

floodfill(369, 169, 15);

putimage(x, y, p1^, xorput);

delay(450);

putimage(x, y, p1^, xorput)

end;

x:=150;

y:=150+random(100)

until keypressed;

readln;

closegraph;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]