Чтобы перейти в графический режим необходимо вызвать графический драйвер. Для этого используется процедура InitGraph, содержащаяся в модуле Graph. Этот модуль должен находиться в текущем каталоге. Ниже приведена программа, рисующая простенький пейзаж.
program p15_4;
uses crt, graph; {Описание подключаемых модулей}
const pi=3.1415298;
luchnum=42; {Количество лучей солнца}
rmin=30; {Минимальный радиус или радиус начала лучей}
rmax=50; {Максимальный радиус или радиус окончания лучей}
sx=50; {Центр солнца по оси X}
sy=50; {Центр солнца по оси Y}
starnum=10; {Количество звезд}
starsize=5; {Размер звезд}
starr=100; {Разброс звезд в пределах...}
starm=100; {Смещение звезд от начала координат на...}
flonum=5; {Количество растений}
flost=50; {Координата X начала рисования растений}
flostep=50; {Расстояние между цветами}
florand=50; {Разнос значений по Y при генерации случайного значения размещения растения}
flostY=400;{Координата Y расположения растений}
var
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
ch: Char;
i, {Счетчик цикла}
x1,y1 {Координаты звезд}
:Integer;
begin
grDriver:=Detect; {Установка графического драйвера}
|
|
InitGraph(grDriver, grMode,'h:\tp\bgi'); {Инициализация графического режима и установка пути к драйверу}
ErrCode:= GraphResult; {Передача результатов инициализации графического режима переменной}
if ErrCode<>grOk then {Если не все нормально}
halt(1); {То выход...}
while True do
begin
SetTextStyle(DefaultFont, HorizDir, 1); {Вывод текста на экран}
SetTextJustify(LeftText, TopText);
MoveTo(120, 0);
OutText('1 - Night');
MoveTo(120, 20);
OutText('2 - Day');
MoveTo (120, 40);
OutText('Esc - Exit');
ch:=readkey; {Ожидание нажатия кнопки}
if ch = '1' then {При нажатии на кнопку "1" }
begin
setcolor(black); {Блок очистки экрана}
for i:=0 to getmaxY do
line(0,i,getmaxx, i);
setcolor(white);
for i:=1 to 15 do {рисуем траву с помощью полуокружностей, созданных с помощью элипсов заданым начальным и конечным углом}
begin
Ellipse ((i*40), 480, 0, 180, 20, 20); {Рисуем траву}
end;
Rectangle(320, 170, 520, 370); {Рисуем дом}
Line(420, 70, 620, 270); {Крышу}
Line(420, 70, 220, 270);
Line(500, 150,500,50); {Трубу}
Line(500,50,470,50);
Line(470,50,470, 120);
Rectangle(370, 220, 470, 320); {Окно}
Line(370,260,470,260);
Line(420,260,420,320);
Ellipse(200, 200, 90, 270, rmax-10,rmax-10); {Луна}
Ellipse(200, 200, 90, 270, rmin,rmax-10);
Randomize; {Установка генератора случайных чисел}
for i:=1 to starnum do {Здесь мы рисуем звезды}
begin
x1:=random(starr)+starm; y1:=Random(starr)+starm;
Ellipse(round(x1-starsize/2), round(y1+starsize/2), 0, 90, starsize,starsize);
Ellipse(round(x1+starsize/2+starsize), round(y1 +starsize/2), 90, 180, starsize,starsize);
Ellipse(round(x1+starsize/2+starsize),round(y1-starsize-starsize/2), 180,270,starsize,starsize);
Ellipse(round(x1-starsize/2),round(y1-starsize-starsize/2), 270, 360, starsize,starsize);
end;
end;
if ch = '2' then {При нажатии на кнопку "2" }
begin
setcolor(black); {Блок очистки экрана}
for i:=0 to getmaxY do
line(0,i,getmaxx,i);
setcolor(white);
begin
for i:=1 to 15 do {рисуем траву с помощью полуокружностей созданных с помощью эллипсов заданным начальным и конечным углом}
begin
Ellipse ((i*40), 480, 0, 180, 20, 20); {Рисуем траву}
end;
Rectangle(320, 170, 520, 370); {Рисуем дом}
|
|
Line(420, 70, 620, 270); {Крышу}
Line(420, 70, 220, 270);
Line(500, 150,500,50); {Трубу}
Line(500,50,470,50);
Line(470,50,470, 120);
Rectangle(370, 220, 470, 320); {Окно}
Line(370,260,470,260);
Line(420,260,420,320);
PieSlice(sx, sy, 0, 360, rmin); {Ядро солнца}
for i:=0 to luchnum do {Его лучи}
begin
line(round(sin((2*pi/luchnum)*i)*rmin)+sx, {Сами лучи}
round(cos((2*pi/luchnum)*i)*rmin)+sy,
round(sin((2*pi/luchnum)*i)*rmax)+sx,
round(cos((2*pi/luchnum)*i)*rmax)+sy);
end;
end;
for i:=1 to flonum do { a здесь цветы мы рисуем цветы}
begin
x1:=flost+i*flostep;
y1:=Random(florand)+flostY;
Ellipse(x1,y1,0,90, 30,20);
Ellipse(x1,y1,0,90, 20,20);
Ellipse(x1+60,y1,90,180, 30,20);
Ellipse(x1+60,y1,90,180, 20,20);
Ellipse(x1+40,y1,90,180,10,70);
Circle(x1+40,y1-70,5);
Ellipse(x1+40,y1,90,180, 10,70);
Ellipse(x1+31,y1-79,340,290,10,10);
Ellipse(x1+49,y1-79,250,200, 10,10);
Ellipse(x1+49,y1-62, 160,110,10,10);
Ellipse(x1+31,y1-62,70,20,10,10);
end;
end;
if ch = #27 then {При нажатии на кнопку "Esc" для выхода из программы}
begin
halt(1); {Прерывание работы программы, выход в систему с ошибкой 1}
end;
end;
for i:=1 to 15 do {рисуем траву с помощью полуокружностей созданных с помощью эллипсов с заданным начальным и конечным углом}
begin
Ellipse ((i*40), 480, 0, 180, 20, 20); {Рисуем траву}
end;
Rectangle(320, 170, 520, 370); {Рисуем дом}
Line(420, 70, 620, 270); {Крышу}
Line(420, 70, 220, 270);
Line(500, 150,500,50); {Трубу}
Line(500,50,470,50);
Line(470,50,470, 120);
Rectangle(370, 220, 470, 320); {Окно}
Line(370,260,470,260);
Line(420,260,420,320);
PieSlice(sx, sy, 0, 360, rmin); {Ядро солнца}
for i:=0 to luchnum do {Его лучи}
begin
line(round(sin((2*pi/luchnum)*i)*rmin)+sx,
round(cos((2*pi/luchnum)*i)*rmin)+sy,
round(sin((2*pi/luchnum)*i)*rmax)+sx,
round(cos((2*pi/luchnum)*i)*rmax)+sy);
end;
Ellipse(200, 200, 90, 270, rmax-10,rmax-10); { Луна}
Ellipse(200, 200, 90, 270, rmin,rmax-10);
Randomize; {Установка генератора случайных чисел}
for i:=1 to starnum do {Здесь мы рисуем звезды}
begin
x1:=random(starr)+starm;
y1:=Random(starr)+starm;
Ellipse(round(x1-starsize/2), round(y1+starsize/2), 0, 90, starsize,starsize);
Ellipse(round(x1+starsize/2+starsize), round(y1+starsize/2), 90, 180, starsize,starsize);
Ellipse(round(x1+starsize/2+starsize),round(y1-starsize-starsize/2), 180,270,starsize,starsize);
Ellipse(round(x1-starsize/2),round(y1-starsize-starsize/2), 270, 360, starsize,starsize);
end;
for i:=1 to flonum do { a здесь цветы}
begin
x1:=flost+i*flostep;
y1:=Random(florand)+flostY;
Ellipse(x1,y1,0,90, 30,20);
Ellipse(x1,y1,0,90, 20,20);
Ellipse(x1+60,y1,90,180, 30,20);
Ellipse(x1+60,y1,90,180, 20,20);
Ellipse(x1+40,y1,90,180,10,70);
Circle(x1+40,y1-70,5);
Ellipse(x1+40,y1,90, 180,10,70);
Ellipse(x1+31,y1-79,340,290,10,10);
Ellipse(x1+49,y1-79,250,200,10,10);
Ellipse(x1+49,y1-62,160,110,10,10);
Ellipse(x1+31,y1-62,70,20,10,10);
end;
Readln; {Ожидание нажатия клавиши}
CloseGraph; {Выход из графического режима}
end.
Приложение