Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AEP_LEKTsII.doc
Скачиваний:
90
Добавлен:
28.03.2015
Размер:
1.27 Mб
Скачать

Initgraph(var gd:integer, var gm:integer, pt:string);

Бүтінсанды gd және gm айнымалылар графикалық драйвердің типін және оның жұмыс жасау режимін береді, жолдық айнымалы pt - *.bgi файлға жол көрсетеді. Мысалы, шешу қабілеті 640480 пиксел және 16 түсті сүйемелдейтін Паскаль үшін негізгі VGA видеорежимін таңдаған кезде келесі кодты пайдалануға болады:

uses graph;

var gd,gm,error: integer;

begin

gd:=VGA; {адаптер VGA}

gm:=VGAHi; {режим 640*480 пикс.*16 түс}

initgraph(gd,gm,'');

error:=graphresult;

if error <> grOk then begin

write ('Графика қатесі: ',

grapherrormsg(error));

readln; halt;

end;

line (0,0,getmaxx,getmaxy);

readln; closegraph;

end.

egavga.bgi файлға жол бос болып көрсетілгендіктен, ол ағымдағы бумада орналасқан деп жорамалдаймыз. Графикалық режимге өткеннен кейін line процедурасы экранның сол жақтағы жоғарғы бұрышынан бастап оң жақтағы төменгі бұрышына дейін сызықты салады, одан кейін Enter басылғанда, графикалық режим жабылады да программадан шығамыз.

Максималды мүмкін болатын режимді автоматты түрде таңдау үшін gd айнымалысына detect мәнін меншіктеу керек, бұл кезде егер Турбо Паскаль орналасқан ағымдағы каталогта *.bgi файлы бар болса, онда gm және pt айнымалылары анықталмайды. мысалы:

uses graph; var gd,gm: integer;

begin

gd:=detect; initgraph(gd,gm,''); ...

Келесі мысалда экранда "сызықты" объектпен (терезелер мен қабаттар саны ауыспалы болатын үй) қатар ол үшін декарттық координаттардан полярлы координаттарға қайта есептеу қажет болатын "радиалды" (сәулелі күн) объектіні суреттейміз. Декарттық координаттардан полярлы координаттарға аудару принципін түсіндіретін схема 14.1 суретте келтірілген.

Сурет 14.1 - Декарттық координаттардан полярлы координаттарға қайта есептеу

program SunHouse;

uses graph,crt;

var Driver, Mode: integer;

i,j,u,N,K,x2,y2:integer;

rad:real; sunx,suny:integer;

begin

{Енгізу дұрыстығын тексермейміз}

writeln ('Неше қабат?'); read (N);

writeln ('Әр қабатта қанша терезе?');

read (K);

Driver := VGA; Mode:=VGAHi;

initgraph(Driver, Mode,'');

{Домик}

setcolor (15);

rectangle (20, getmaxy-20-70*n,

20+k*50+(k+1)*20, getmaxy-20);

{Шатыр}

moveto (20,getmaxy-20-70*n);

lineto(10,getmaxy-20-70*n);

lineto (20,getmaxy-40-70*n);

lineto (20+k*50+(k+1)*20,getmaxy-40-70*n);

lineto (30+k*50+(k+1)*20,getmaxy-20-70*n);

lineto (20+k*50+(k+1)*20,getmaxy-20-70*n);

{Қабаттар арасындағы сызықтар}

for i:=1 To N Do

line (20, getmaxy-20-70*i,

20+k*50+(k+1)*20, getmaxy-20-70*i);

setfillstyle (solidfill, YELLOW);

{Әр қабаттағы терезелер}

for i:=1 To N Do {Қабаттар бойынша цикл}

for j:=1 To K Do begin {Терезелер бойынша цикл}

bar(20+(j-1)*70+20,getmaxy-20-(i-1)*70-

60,20+(j-1)*70+70, getmaxy-20-(i-1)*70-10);

end;

sunx:=getmaxx-50; suny:=50;

{Күннің центрі – экран бетіндегі координаталар}

FillEllipse (sunx, suny, 30, 30);

{Күннің пішінін суреттейміз}

setcolor (YELLOW);

{Сәулелерді суреттейміз}

u:=0;

while u<=360 Do begin

{ u бұрышын 0 ден 360 градусқа дейін ауыстырамыз}

rad:=u*pi/180;

{ sin,cos функциялары үшін радиандарға аудару}

x2:=round(sunx+50*cos(rad));

y2:=round(suny+50*sin(rad));

{ полярлы координаттардан декартты координаттарға аудару}

line (sunx,suny,x2,y2);

u:=u+12; {бұрыш бойынша қадам = 12 градус}

end;

repeat until keypressed;

closegraph;

end.

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