Примеры задач

Графика


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

Методика решения

Для начала создаём программу, которая с помощью процедур moveto и lineto рисует треугольник. Затем создаем процедуру, которая из этих треугольников составляет ёлку. Входными параметрами процедуры будут координаты экрана, в которых рисуется ёлка и количество ярусов ёлки.
В основной программе инициализируем графический режим.
Вызываем несколько раз процедуру для рисования ёлки в разных местах экрана и со случайным количеством ярусов.
Рисуем ёжика. Для того чтобы организовать его движение мы делаем задержку экрана Delay(3000) , закрашиваем ежа в цвет фона, меняем координаты ёжика рисуем его с новыми координатами и снова делаем задержку, повторяем эти действия пока пользователь не нажмёт клавишу.

Листинг программы

Program ex8_3;
Uses graph ,crt ;
Var gd,gm,x,y,yarys,g,n,dx,dy: integer ;
{x,y-координаты, yarys-колличество ярусов у ёлки, ryad-колличество рядов}
Procedure yolka(a,b,ya:integer);{Процедура для рисования ёлки}
Var i:integer;
Begin
For i:=1 to ya do
Begin
Moveto(a,b);
Lineto(a-30,b+20);
Lineto(a+30,b+20);
Lineto(a,b);
Setfillstyle(1,2);
Floodfill(a,b+3,2);
b:=b-20
End;
End;
begin {Начало основной программы}
gd:=detect ;
initgraph (gd,gm,'');
setbkcolor(10);
setcolor(2);
x:=70;
y:=100;
Randomize;
For n:=1 to 3 do
Begin
For g:=1 to 4 do
Begin
yarys:=3+random(3);
yolka(x,y,yarys);
x:=x+150;
End;
x:=70;
y:=y+150;
End;
x:=145; y:=150;
dx:=1; dy:=0;
Repeat
{Рисуем ежа}
SetLineStyle(0,1,1);
Setcolor(14);
SetFillStyle(1,14);
FillEllipse(x,y,25,10);
Setcolor(6);
SetFillStyle(1,6);
FillEllipse(x+27,y,3,3);
SetFillStyle(1,1);
FillEllipse(x+20,y-3,2,2);
SetLineStyle(1,1,3);
Line(x-25,y-10,x+20,y-10);
Line(x-29,y-5,x+15,Y-5);
Line(x-29,y,x+15,y);
Delay(3000);
{Закрашиваем ежа фоновым цветом}
Setcolor(10);
SetFillStyle(1,10);
FillEllipse(x,y,35,15);
x:=x+dx; y:=y+dy;
if (x=290) and (y=150) then
Begin
dx:=0; dy:=1
End;
if (x=290) and (y=300) then
Begin
dx:=1; dy:=0
End;
if (x=440) and (y=300) then
Begin
dx:=0; dy:=-1
End;
if (x=440) and (y=150) then
Begin
dx:=1; dy:=0
End;
if x>640 then x:=1;
Until keypressed
End.

Запустить программу






Назад