Графический режим

Чтобы перейти в графический режим необходимо вызвать графический драйвер. Для этого используется процедура 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.


Приложение

       
 
   
 


       
 
   
 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: