===== Модули =====
FIXME
Модуль (Unit) - это отдельный файл. Как правило, он находится в том же каталоге, что и основная программа. Модули нужны для облегчения своего нелегкого труда программиста. Если Вы планируете использовать одну и туже процедуру в своих программах, то пора задуматься о написании модуля!
Пример программы и модуля к ней. В программе графический режим включается и выключается с помощью процедур //GraphIni// и //GraphEnd// соответственно. Эти процедуры записаны в модуле //mygraph//. На экране Вы увидите окружность, которая двигается.
program moving;
uses
oglgraph, crt, mygraph;
var x,y,vx,r : integer;
begin
GraphIni; {открываем графическое окно - процедура из модуля mygraph}
x:=getmaxx div 2; {начальные координаты объекта - середина экрана}
y:=getmaxy div 2;
vx:=1; {скорость движения}
r:=50; {радиус окружности}
repeat
clearviewport; {очистка пассивного окна отрисовки}
SetFillStyle(4,yellow);
FillEllipse(x,y,r,r);
graphSwapBuffers; {смена окон отрисовки - мгновенное отображение на дисплее пассивного окна для отрисовки}
delay(10);
x:=x+vx;
if (x+r>=getmaxx) or (x-r<=0) then vx:=-vx;
until graphkeypressed;
GraphEnd; {закрываем графическое окно - процедура из модуля mygraph}
end.
>
unit mygraph; {заголовок модуля}
interface
uses crt, oglgraph; {описание используемых библиотек в модуле}
var
gd, gm : integer;
{заголовки доступных из программы процедур}
Procedure GraphIni;
Procedure GraphEnd;
implementation {содержимое модуля - сами процедуры и функции}
Procedure GraphIni; {процедура инициализации графического окна}
begin
gd:=detect;
gm:=detectmode;
initGraph(gd,gm,'');
if Graphresult<>GrOk then
begin
writeln('Graphics is not Ok');
halt(1);
end else
writeln('GraphResult = ',graphresult);
SetDoubleBuffer(true);
clearviewport;
delay(300);
end;
Procedure GraphEnd; {процедура закрытия графического окна}
begin
SetDoubleBuffer(false);
clearviewport;
CloseGraph;
end;
begin {часть модуля, которая исполняется при вызове его из программы в разделе uses}
end.