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

3.4. Использование подпрограмм и процедур рисования окружностей, эллипсов, дуг, линий, закраски замкнутой фигуры

Задание 3.4.1. Нарисовать новогоднюю картину - елка, снеговик, падающий снег. Елка и снеговик (шары снега) создаются с использованием процедур пользователя. А вот падающий снег можно создать двумя способами: используя символ "*" или используя белые точки, задаваемые процедурой PutPixel. Гирлянды на елку развешиваем с использованием циклов, которые помещаем во внешний цикл, включающий также и создание снежинок. Такой прием позволяет имитировать мигание лампочек.

uses

graph, crt;

var

gd, gm, err, snowx, snowy, t, j: integer;

cv, i: word;

zvezda: char;

procedure ball(x, y, r, cvet: integer);

begin

setfillstyle(1,cvet);

pieslice(x, y, 0, 360, r);

end;

procedure elka(x1, y1, x2, y2, x3, y3: integer);

begin

line(x1, y1, x2, y2);

line(x1, y1, x3, y3);

line(x3, y3, x2, y2);

floodfill(120, y3+2, green);

end;

begin

gd:=vga;

gm:=vgahi;

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

err:=graphresult;

if err<>grok then

begin

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

halt(1)

end;

randomize;

setcolor(lightcyan);

ball(320, 280, 60, lightcyan); {Снеговик}

ball(320, 180, 40, lightcyan);

ball(320, 110, 30, lightcyan);

ball(375, 170, 15, lightcyan);

ball(265, 170, 15, lightcyan);

setcolor(1); {Глаза}

ball(310, 100, 5, 1);

ball(330, 100, 5, 1);

setcolor(magenta);

arc(320, 118, 220, 320, 13); {Улыбка}

setcolor(red);

line(321, 113, 324, 119); {Нос-морковка}

line(321, 113, 310, 123);

line(310, 123, 324, 119);

setfillstyle(1, red);

floodfill(321, 114, red);

setcolor(yellow); {Шляпа-ведро}

line(320, 60, 308, 82);

line(320, 60, 335, 60);

line(335, 60, 340, 88);

arc(320, 110, 50, 110, 30);

setfillstyle(1, yellow);

floodfill(320, 65, yellow);

setcolor(brown); {Метла}

setfillstyle(1, brown);

bar(374, 340, 378, 130);

for t:=1 to 45 do

begin

if t mod 2 <>0 then line(376, 131, 398-t+1, 100)

end;

bar(110, 301, 130, 320); {Елка}

setcolor(green);

setfillstyle(1, green);

elka(60, 300, 180, 300, 120, 250);

elka(70, 250, 170, 250, 120, 210);

elka(90, 210, 150, 210, 120, 170);

elka(100, 170, 140, 170, 120, 140);

randomize;

zvezda:='*';

setcolor(lightgray);

for t:=1 to 500 do

begin

for j:=1 to 5 do

begin {Снег}

snowx:=random(640);

snowy:=random(480);

delay(150);

setcolor(15);

outtextxy(snowx, snowy, zvezda)

end;

cv:=random(15)+1; {Гирлянды}

setcolor(cv);

setfillstyle(1, cv);

for i:=1 to 4 do pieslice(102+i*6, 165-i*2, 0, 360, 2);

cv:=random(15)+1;

setcolor(cv);

setfillstyle(1, cv);

for i:=1 to 7 do pieslice(100+i*6, 190+i*2, 0, 360, 2);

cv:=random(15)+1;

setcolor(cv);

setfillstyle(1, cv);

for i:=1 to 11 do pieslice(72+i*6, 250-i*2, 0, 360, 2);

cv:=random(15)+1;

setcolor(cv);

setfillstyle(1, cv);

for i:=1 to 13 do pieslice(93+i*6, 270+i*2, 0, 360, 2);

delay(700)

end;

readln;

closegraph;

end.

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