Графика және анимация
Аннотация
Бәйге ойыны бағдарламасын жасау тақырыбындағы берілген курстық
жұмыста С++ ортасындағы графикамен жұмыс қарастырылады.
Мақсатым ойын-бағдарламасын жазу болды, мұнда тышқанның көмегімен
экранда бейнеленген нысананы жаралауымыз қажет.
Алдымен main() функциясы жасалды, бұл функцияда msinit() функциясы
шақырылатын vvod() функциясын шақыру орындалады. Сосын функцияларды жасауда
үзулерді өңдеу қажеттілігі пайда болды.Оны INTER() және OBR() функциялары
жүзеге асырады. game() және image() безендіру функциялары (олар ойын өрісі
мен менюін салуды іске асырады) соңында жазылды, оларды шақыру vvod()
функциясымен орындалады.
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ..5
1Графика және
анимация ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...6
1.1 Режимдік
функциялар ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... 6
1.2 Анимация
құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... 13
2 Бағдарламаны
жобалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .18
2.1 Ойынның құрастырылу
әдісі ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
...18
2.2 Бағдарламаның
алгоритмі ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ..18
3
Құжаттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ...19
3.1 Қолданушыға
нұсқау ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .19
3.2 Бағдарламаушыға
нұсқау ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ..19
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..20
Қолданылған әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ..21
Қосымша
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... 22
Кіріспе
Өткен ғасырдың орта кездерінде есептеуіш техника саласында күрделі
өзгерістер болып, Фортран, Бейсик, Паскаль және т.б. көптеген жоғары
деңгейлі программалау тілдерінің жарыққа шыққаны белгілі. Кітапта
оқырмандар ол тілдердің кейбірімен бастапкы түрде болса да таныс деп
есептелген.
1972 жылы AT&T атаулы Американың корпорациясы жаңа C (Си) программалау
тілін дайындап шыкты. Ол — құрылымдық және алгоритмдерді басшылыққа алып
дайындалған процедуралық жоғары деңгейлі тіл.
Тілге жылдам орындалатын, жеке биттермен операция жасайтын операторлар
да енгізілген. Олар арқылы байланыс порттарын, магниттік дискілерде
жинақтауыштарды және т.б. аппараттық кұралдарды басқаруға мүмкіндік
жасалды. Ал, алғашқы кездерде жеке типті компьютерлердің аппараттық
кұралдарына қол жеткізе алатын машиналық командалармен жұмыс істейтін
төменгі деңгейлі ассамблер тілі ғана болатын.
Си тілі бірте-бірте дамытылып, қазіргі кезде пайдаланылып келе жаткан,
1983 жылы дүние жүзі елдері басшылыққа алған ANSI C нұсқасы да жарыққа
шықты (ANSI - стандарттардың Америкалық ұлттық институты). ANSI C тілінің
түрлі нұсқаларына енгізілген стандартты кітапханалар да бар. Тілдің
кемшілігі де жоқ емес, ол жүйелік және қолданбалы программаларды дайындауға
бейім, бірақ айнымалыларға рұқсат етілмеген қол жеткізу механизмін
қамтамасыз етпейді және құрьшатын класты баска кластың ішкі класы (мұрагер)
ретінде жариялау мүмкін емес. Мұндай объектілі - бағдарлы программалау
(ОБП) тілдеріне енетін ерекшеліктерді ескеріп, Borland International Inc
фирмасы C тілінің дамытылған жаңа Turbo C (Турбо Си) нұскасын 1980
жылдардың басында жарыққа шығарды. Кейіннен Turbo C++ 2.0, Turbo C++ 3.0
және олардың кеңейтілген Borland C++ нұсқалары да пайда болды: Borland C++
2.0, Borland C++ 3.0, Borland C++ 3.1, Borland C++ 4.0 және т.б.
C++ тілі де процедуралық тіл, бірақ онда ОБП тілінің ерекшеліктері кең
түрде қарастырылған. ОБП тілінде қолданылатын негізгі ұйымдар: класс,
объект, оқиға, қасиеттер мен әдістер. Бұл ұғымдар:
объект - құрылымы класс типі арқылы сипатталатын айнымалы;
оқиға - объект жағдайының өзгеруі; қасиеттер - объект сипаттамалары
(параметрлері); әдіс - класс элементтерін іздейтін команда не процедура,
функция.
класс - пайдаланушы анықтайтын тип. Тип қасиеттер мен әдістерді бірге
қосып сипаттайды. Программада осы кластың жеке даналары дайындалады. ОБП-да
класс үшін мұрагерлік, инкапсуляция және полиморфизм принциптері
енгізілген. Мұрагерлік — программада негізгі класс типінің туынды
иерархиялық класта сақталуы, т.б.
1 ГРАФИКА ЖӘНЕ АНИМАЦИЯ
1. Режімдік функциялар
Turbo C жғне C++ тілдерінде графикалық режімге µтіп, т‰рлі фигуралық
кескіндерді салуѓа арналѓан стандартты фунцкиялар бар. Олар graphics.h
файлында сақталып қойылған. Графикалық драйверлер (басқарушы программалар)
BGI (Borland Graphics Interғase) кеңейтілуі бар файлдарда сақталѓан. Оны
қосу арнайы initgraph() функциясы арқылы орындалады.
Графикалық режім EGA, VGA, SVGA адаптерлерінде т‰рлі-т‰рлі. Мысалы,
EGA адаптері 640 X 480 графикалық режімді пайдаланады.
Графикалық режімде ж±мыс істеу функциялары:
1. Драйвер мен графикалық режімді тандау: detectgraph (&gd, &gm);
2. Драйверді ж‰ктеу жғне графикалық ж‰йені инициалдау:
initgraph (&gd, &gm, "BGI файлына жол");
М±ндаѓы gd - қажетті драйвер нµмірі, gd=GraphDriver; gm - пайдаланатын
графикалық режім нµмірі, gm=GraphMode. (gd, gm айнымалылары программада int
типі арқылы сипатталады. Программада драйверді тандау операторыныњ орнына
gd = DETECT; операторын пайдалануға да болады. Мысалы, (30)-программаны
карањыз. DETECT — автоматты т‰рде анықталатын графикалық драйвер нµмірі).
Егер драйвер жадта д±рыс орналастырылѓан болса, б±л функция жадтан 4кб
кµлемді графикалық буфер бµліп қояды.
Егер BGI файлдары ағымдық каталогта бар болса, программада ғр жолы
функцияны толық жазбай, оныњ ‰шінші параметрініњ орнына бос орын (" ")
жолын енгізіп кету жеткілікті:
initgraph (&gd, &gm, " ");
3. Қате жаѓдайды тексеру функциясы: graphresult ();
Егер программа д±рыс қосылса, онда қате коды = 0 деп есептеледі
(жазылу т‰рі: grOK=0), ал, т‰рлі кателер кодтары - 0-ден басқа б‰тін
сандар.
Сонымен, графиктік режімді іске қосу ‰шін программа басын алѓашқы
кезде мынадай т‰рде жазу керек:
#include stdio.h
#include conio.h #include stdlib.h
#include graphics.li main ()
м±ны кµп жаѓдайда енгізбеуге де болады
{
int gd, gm, error;
defectgraph (&gd, &gm); initgraph (&gd, &gm, "");
erar=graphresult();
(error!=grOK)
{ puts ("графика катесі"); exit (1); }
Ескерту. Компьютерде режімніњ д±рыс істейтініне сенімді болсањыз,
графиктік режімніњ бар-жоғын тексеру, ( error, if ) операторларын енгізудіњ
қажеті жоқ.
Т‰сті орнату
Graphics файлында анықталѓан т‰стік палитралар (барлығы 16, кестеге
негізгі тек енгізілген):
12 т‰с
Т‰с аты Код Казақша аты
BLACK 0 қара
BLUE 1 кµк
GREEN 2 жасыл-кµк
GRAY 3 с±р
RED 4 қызыл
MAGENTA 5 қызыл курең
BROWN 6 қоњыр
LIGHT GRAY 7 ашық қоныр
LIGHT GREEN 10 ашық кµк
LIGHT RED 12 ашык қызыл
YELLOW 14 сары
WHITE 15 ақ
Фон т‰сін орнату функциясы: setbkcolor (т‰с);
Tүc ‰шін оныњ латынша атын не кодын енгізуге болады.
Сызылатын кескіндер мен жазылатын мғтін т‰сін орнату:
setcolor (т‰с);
Геометриялық объектініњ µзгешілігі мен қалыњдыѓын орнату:
setlinestyle (т‰р, ‰лгі, қалындық);
М±ндаѓы т‰р кодтары:
0 SOLID_LINE (т±тас)
1 DOTTED_LINE (н‰ктелерден туратын)
2 CENTER_LINE (н‰ктелер мен сызықшалардан)
3 PASHED_LINE (пунктирлермен)
4 USERBIT_LINE (пайдаланушы анықтайтын);
Қалыңдық:
1 NORM_WIDTH (бір пиксельдік сызық)
3 THICK_WIDTH (‰ш пиксельдік сызық)
‡лгі параметрі т‰р коды 4-ке етіп ашылѓанда ғана беріледі, ғшейінде ол
‰шін 0 коды енгізіледі.
Т±йық облысты бояу ‰шін арналѓан функциялар:
a1) setfillstyle (бояу типі, т‰с);
М±ндаѓы бояу типініњ негізгі кодтары мен атаулары:
0 EMPTY_ҒILL фон т‰сімен бояу
1 SOLID_ҒILL кµрсетілген т‰спен т±тас толтыру
3 LTSLASH_ҒILL кµлбеу сызықтармен штрихтау
a2) floodfill(x, y, т‰с);
(x, y) — т±йық облыс ішінде жататын н‰кте, т‰с -т±йық облыс жиегініњ
т‰сімен бірдей т‰с (соњғы функция кµбірек пайдаланылады).
Экранды тазалау (орнатылѓан параметрлерді алып тастап, алѓашқы
графикалық режімге µту):
cleardevice ();
Берілген графикалық режімде н‰ктелер координаттарыныњ ең ‰лкен
мғндерін анықтайтын функциялар:
getmaxx (); - кµлденеңі бойынша, getmaxy (); - тігі бойынша.
Графикалық экранды тазалау: clearviewport ():
Ағымдық координаттарды анықтау: getx(); gety();
Графикалық режімде жадты тазалап, алѓашқы мғтіндік режімге µту:
closegraph ();
Графикалық экран ішінде терезе ашу:
setviewport (xl, yl, x2, y2, clip);
-(xl, yl), (x2, y2) - терезеніњ сғйкес сол жақ жоѓарѓы тµбесі мен оњ
жақ тµменгі тµбесініњ координаттары;
clip - кесіп тастау коды. Егер clip=l, онда терезеге сыймайтын кескін
элементтері анынып тасталады, егер clip=0 болса, терезе шекаралары
ескерілмейді.
Геометриялық объектілерді сызу операторлары
1. (xl, yl), (x2, y2) н‰ктелерін қосатын т‰зу кесіндісі:
line (xl, yl, x2, y2)
ал, lineto (x, y) - функциясы ағымдық н‰ктеден (x, y) н‰ктесіне дейін
т‰зу кесіндісін сызады.
Сғйкес сол жақ жоѓарѓы жғне оњ жақ тµменгі координаттары (xl, yl),
(x2, y2) болатын тік тµртб±рыш:
rectangle (xl, yl, x2, y2);
Орталық н‰ктесі (x, y) шењбер:
circle (x, y, радиус);
. Шењбер доғасын сызу:
arc (x, y, баст_бүрыш, соњғ._б±рыш, радиус);
- б±рыштар градустық µлшеммен беріледі жғне сағат тіліне қарсы
есептеледі.
М±ндаѓы ескеретін жайт: кескіндерді салу пиксельдік н‰ктелер бойынша
орындалады.
Жартылай µстері rx, rу болатын боялѓан эллипсті орнату,
(x, y) — орталық н‰ктесі:
ғillellipse (x, y, rx, ry);
Эллипс доғасын сызу:
ellipse (x, y, баст_б±рыш, соњғ._б±рыш, rx, ry );
Боялѓан тік тµртб±рышты салуѓа арналѓан функция:
bar (xl, yl, x2, y2);
- (xl, yl,), (x2, y2) - сғйкес сол жақ жоѓарѓы жғне оњ жақ тµменгі
тµбелерініњ координаттары. Тµртб±рыш алдын ала салынған т±йык, облысты бояу
т‰сімен боялып кµрсетіледі жғне контуры сызылмайды.
Контур іші боялѓан параллелепипед сызу функциясы:
bar3d (xl, yl, x2, y2, тереңдігі, тµбесі);
м±нда параллелепипедтің алдыњѓы жағы боялып кµрсетіледі. Тереңдік ‰шін
20 .. 30 аралығындағы б‰тін санды алу жеткілікті, тµбе ‰шін 1 саны алынады.
Ол параллелепипед тµбесін сызып кµрсетеді ( 0 саны жазылса, тµбе
сызылмайды).
Орталық н‰ктесі (x, y), боялѓан дµңгелек секторы:
pieslice(x, y, баст_б±рыш, соњғ_б±рыш, радиус);
контуры кµрсетілген жғне боялѓан сектор сызылады. Боялу т‰сі мен сызық
қалындыѓы алдын ала енгізілген setlinesyle() функциясы бойынша орнатылады.
Боялѓан эллипстік сектор:
sector (x, y, баст_б±рыш, соњғ_б±рыш, rx, гу);
Салынған ‰шб±рыш, тік тµртб±рыш, шеңбер сияқты фигураларды ағымдық
кезде µшіріп, фигуралардыњ "қозѓалуын" кµрсететін (анимация ±йымдастыратын)
функция:
setwritemode (режім);
режім ‰шін алынатын кодтар:
0- кµшіру;
1- экранда сызулы кескінді "µшіру";
2- стандартты режім.
Мундағы 1 (бір) - т‰рлі сызықтармен қ±растыру кезінде шыѓарып тастау
операциясын орындайды. Оныњ ерекшелігі: бір сызық т±рѓан орнына ғкелінген
кезде ол кµрінбей ("µшіп") калады, одан шығу кезінде ол қайта кµрінеді.
Яғни, функцияны анимация ±йымдастыру ‰шін пайдалануға болады.
Қозғалуды ±йымдастыратын басқа функциялар да бар:
getimage(), imagesize() жғне putimage(). getimage() функциясы арқылы
бейне экранныњ берілген бµлігіне жазылады да, бейнені сақтайтын жад кµлемін
анықтау ‰шін imagesize() функциясы шақырылады. Одан әрі putimage()
функциясы арқылы оны экранныњ қалаған жеріне шақыруға болады.
Н‰кте орнату:
putpixel (x, y, т‰с);
М±ндаѓы x, y — терезеніњ координаттар ж‰йесінде пиксель µлшемімен
орнатылатын н‰кте.
Терезеде мғтін орнату:
outtextxy (x, y, mn);
М±ндаѓы x, y - мғтін шыѓарылатын бастапқы н‰кте, mn — шыѓарылатын
жолға жазылатын мғтін мазм±ны. Ол тырнақшалар ішінде жазылады. Режімде
жолды ағымдық позициядан бастап шыѓаратын
outtext() функциясы да бар.
Тµменгі функцияны пайдаланып, мғтінді т‰рлі т‰рде шыѓаруға болады.
settextstyle (шрифт, бағыт, µлшем);
шрифт (қаріп) параметрлерініњ негізгілері:
0 DEҒAULT _ҒONT стандартты
3 SANS_SERIҒ_ҒONT тікесінен жазу
бағыт параметрлері:
0 HORlZ_DIR солдан оњға қарай
1 VERT DIR тµменнен жоғарыға
µлшем - коды 1 .. 10 аралыѓында алынатын б‰тін сан. Стандартты шрифт
‰шін µлшем коды 4-ке тењ етіп алынады, ол - 32 x 32 пиксельдік µлшем.
Фигуралар салу программалары
Экран бетіне ақ т‰сті шеңбер, тік тµртб±рыш жғне т‰зу кесіндісін салу
керек. Олардыњ астыңғы қатарына Шеңбер, Тік тµртб±рыш, Кесінді сµздері
жазылып қойылсын.
#include stdio.h
#include conio.li
#include stdlib.h
#include graphics.h
main ()
{
int gd, gm, error; clrscr ();
detectgraph (&gd, &gm);
initgraph (&gd, &gm, "c:\\Borland\\bgi");
error=graphresult (); iғ (error != grOK)
{ puts (grapherrormsg(error)); exit (-1); }
* кµгілдір экранда ақ т‰с орнату *
setbkcolor (1); setcolor (15);
* объектініњ ерекшеліктерін орнату *
setlinestyle (0, 0, 0);
* экранды тазалау *
cleardevice ();
* шыѓару терезесін орнату, оны тазалау *
setviewport (10, 10, getmaxX()-50, getmaxY() -50,
clearviewport ();
* қажетті т‰стерді дайындап, фигуралар салу*
setbkcolor (0); setcolor (15);
circle (70, 70, 50);
rectangle(180, 30, 250, 150);
line (280, 70, 400, 150);
settextstyle (0, 0, 0);
outtextxy (40, 140, "Шеңбер");
outtextxy (160, 160, "Тіктµртб±рыш");
outtextxy (380, 160, "Кесінді");
getch (); closegraph (); return 0;
}
Ішіне 75%, 25% жазулары жазылѓан боялѓан дµњгелек сектор мен контуры
бар эллипс секторын сызу керек.
Программа ‰зіндісі:
main ()
{
int gd, gm; clrscr ();
initgraph (&gd, &gm, " "); setbkcolor (1);
setcolor (4); setғilestyle (1, 3);
circle (70, 70, 50);
x= getmaxx()2; y= getmaxy()2;
setfillstyle (1, 2);
pieslice (100, 100, 0, 80, 90);
sector (250, 250, 0, 50, 200, 120);
settextstyle (1, 0, 2);
moveto (80, 60); outtext ( "75%");
* (80,60) н‰ктеден бастап *
moveto (120, 110); outtext ("25%");
getch();
closegraph (); return (0);
}
Экранда кездейсоқ орналасқан 70-тей ж±лдыз жғне ... жалғасы
Бәйге ойыны бағдарламасын жасау тақырыбындағы берілген курстық
жұмыста С++ ортасындағы графикамен жұмыс қарастырылады.
Мақсатым ойын-бағдарламасын жазу болды, мұнда тышқанның көмегімен
экранда бейнеленген нысананы жаралауымыз қажет.
Алдымен main() функциясы жасалды, бұл функцияда msinit() функциясы
шақырылатын vvod() функциясын шақыру орындалады. Сосын функцияларды жасауда
үзулерді өңдеу қажеттілігі пайда болды.Оны INTER() және OBR() функциялары
жүзеге асырады. game() және image() безендіру функциялары (олар ойын өрісі
мен менюін салуды іске асырады) соңында жазылды, оларды шақыру vvod()
функциясымен орындалады.
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ..5
1Графика және
анимация ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...6
1.1 Режимдік
функциялар ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... 6
1.2 Анимация
құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... 13
2 Бағдарламаны
жобалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .18
2.1 Ойынның құрастырылу
әдісі ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
...18
2.2 Бағдарламаның
алгоритмі ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ..18
3
Құжаттау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ...19
3.1 Қолданушыға
нұсқау ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .19
3.2 Бағдарламаушыға
нұсқау ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ..19
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..20
Қолданылған әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ..21
Қосымша
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... 22
Кіріспе
Өткен ғасырдың орта кездерінде есептеуіш техника саласында күрделі
өзгерістер болып, Фортран, Бейсик, Паскаль және т.б. көптеген жоғары
деңгейлі программалау тілдерінің жарыққа шыққаны белгілі. Кітапта
оқырмандар ол тілдердің кейбірімен бастапкы түрде болса да таныс деп
есептелген.
1972 жылы AT&T атаулы Американың корпорациясы жаңа C (Си) программалау
тілін дайындап шыкты. Ол — құрылымдық және алгоритмдерді басшылыққа алып
дайындалған процедуралық жоғары деңгейлі тіл.
Тілге жылдам орындалатын, жеке биттермен операция жасайтын операторлар
да енгізілген. Олар арқылы байланыс порттарын, магниттік дискілерде
жинақтауыштарды және т.б. аппараттық кұралдарды басқаруға мүмкіндік
жасалды. Ал, алғашқы кездерде жеке типті компьютерлердің аппараттық
кұралдарына қол жеткізе алатын машиналық командалармен жұмыс істейтін
төменгі деңгейлі ассамблер тілі ғана болатын.
Си тілі бірте-бірте дамытылып, қазіргі кезде пайдаланылып келе жаткан,
1983 жылы дүние жүзі елдері басшылыққа алған ANSI C нұсқасы да жарыққа
шықты (ANSI - стандарттардың Америкалық ұлттық институты). ANSI C тілінің
түрлі нұсқаларына енгізілген стандартты кітапханалар да бар. Тілдің
кемшілігі де жоқ емес, ол жүйелік және қолданбалы программаларды дайындауға
бейім, бірақ айнымалыларға рұқсат етілмеген қол жеткізу механизмін
қамтамасыз етпейді және құрьшатын класты баска кластың ішкі класы (мұрагер)
ретінде жариялау мүмкін емес. Мұндай объектілі - бағдарлы программалау
(ОБП) тілдеріне енетін ерекшеліктерді ескеріп, Borland International Inc
фирмасы C тілінің дамытылған жаңа Turbo C (Турбо Си) нұскасын 1980
жылдардың басында жарыққа шығарды. Кейіннен Turbo C++ 2.0, Turbo C++ 3.0
және олардың кеңейтілген Borland C++ нұсқалары да пайда болды: Borland C++
2.0, Borland C++ 3.0, Borland C++ 3.1, Borland C++ 4.0 және т.б.
C++ тілі де процедуралық тіл, бірақ онда ОБП тілінің ерекшеліктері кең
түрде қарастырылған. ОБП тілінде қолданылатын негізгі ұйымдар: класс,
объект, оқиға, қасиеттер мен әдістер. Бұл ұғымдар:
объект - құрылымы класс типі арқылы сипатталатын айнымалы;
оқиға - объект жағдайының өзгеруі; қасиеттер - объект сипаттамалары
(параметрлері); әдіс - класс элементтерін іздейтін команда не процедура,
функция.
класс - пайдаланушы анықтайтын тип. Тип қасиеттер мен әдістерді бірге
қосып сипаттайды. Программада осы кластың жеке даналары дайындалады. ОБП-да
класс үшін мұрагерлік, инкапсуляция және полиморфизм принциптері
енгізілген. Мұрагерлік — программада негізгі класс типінің туынды
иерархиялық класта сақталуы, т.б.
1 ГРАФИКА ЖӘНЕ АНИМАЦИЯ
1. Режімдік функциялар
Turbo C жғне C++ тілдерінде графикалық режімге µтіп, т‰рлі фигуралық
кескіндерді салуѓа арналѓан стандартты фунцкиялар бар. Олар graphics.h
файлында сақталып қойылған. Графикалық драйверлер (басқарушы программалар)
BGI (Borland Graphics Interғase) кеңейтілуі бар файлдарда сақталѓан. Оны
қосу арнайы initgraph() функциясы арқылы орындалады.
Графикалық режім EGA, VGA, SVGA адаптерлерінде т‰рлі-т‰рлі. Мысалы,
EGA адаптері 640 X 480 графикалық режімді пайдаланады.
Графикалық режімде ж±мыс істеу функциялары:
1. Драйвер мен графикалық режімді тандау: detectgraph (&gd, &gm);
2. Драйверді ж‰ктеу жғне графикалық ж‰йені инициалдау:
initgraph (&gd, &gm, "BGI файлына жол");
М±ндаѓы gd - қажетті драйвер нµмірі, gd=GraphDriver; gm - пайдаланатын
графикалық режім нµмірі, gm=GraphMode. (gd, gm айнымалылары программада int
типі арқылы сипатталады. Программада драйверді тандау операторыныњ орнына
gd = DETECT; операторын пайдалануға да болады. Мысалы, (30)-программаны
карањыз. DETECT — автоматты т‰рде анықталатын графикалық драйвер нµмірі).
Егер драйвер жадта д±рыс орналастырылѓан болса, б±л функция жадтан 4кб
кµлемді графикалық буфер бµліп қояды.
Егер BGI файлдары ағымдық каталогта бар болса, программада ғр жолы
функцияны толық жазбай, оныњ ‰шінші параметрініњ орнына бос орын (" ")
жолын енгізіп кету жеткілікті:
initgraph (&gd, &gm, " ");
3. Қате жаѓдайды тексеру функциясы: graphresult ();
Егер программа д±рыс қосылса, онда қате коды = 0 деп есептеледі
(жазылу т‰рі: grOK=0), ал, т‰рлі кателер кодтары - 0-ден басқа б‰тін
сандар.
Сонымен, графиктік режімді іске қосу ‰шін программа басын алѓашқы
кезде мынадай т‰рде жазу керек:
#include stdio.h
#include conio.h #include stdlib.h
#include graphics.li main ()
м±ны кµп жаѓдайда енгізбеуге де болады
{
int gd, gm, error;
defectgraph (&gd, &gm); initgraph (&gd, &gm, "");
erar=graphresult();
(error!=grOK)
{ puts ("графика катесі"); exit (1); }
Ескерту. Компьютерде режімніњ д±рыс істейтініне сенімді болсањыз,
графиктік режімніњ бар-жоғын тексеру, ( error, if ) операторларын енгізудіњ
қажеті жоқ.
Т‰сті орнату
Graphics файлында анықталѓан т‰стік палитралар (барлығы 16, кестеге
негізгі тек енгізілген):
12 т‰с
Т‰с аты Код Казақша аты
BLACK 0 қара
BLUE 1 кµк
GREEN 2 жасыл-кµк
GRAY 3 с±р
RED 4 қызыл
MAGENTA 5 қызыл курең
BROWN 6 қоњыр
LIGHT GRAY 7 ашық қоныр
LIGHT GREEN 10 ашық кµк
LIGHT RED 12 ашык қызыл
YELLOW 14 сары
WHITE 15 ақ
Фон т‰сін орнату функциясы: setbkcolor (т‰с);
Tүc ‰шін оныњ латынша атын не кодын енгізуге болады.
Сызылатын кескіндер мен жазылатын мғтін т‰сін орнату:
setcolor (т‰с);
Геометриялық объектініњ µзгешілігі мен қалыњдыѓын орнату:
setlinestyle (т‰р, ‰лгі, қалындық);
М±ндаѓы т‰р кодтары:
0 SOLID_LINE (т±тас)
1 DOTTED_LINE (н‰ктелерден туратын)
2 CENTER_LINE (н‰ктелер мен сызықшалардан)
3 PASHED_LINE (пунктирлермен)
4 USERBIT_LINE (пайдаланушы анықтайтын);
Қалыңдық:
1 NORM_WIDTH (бір пиксельдік сызық)
3 THICK_WIDTH (‰ш пиксельдік сызық)
‡лгі параметрі т‰р коды 4-ке етіп ашылѓанда ғана беріледі, ғшейінде ол
‰шін 0 коды енгізіледі.
Т±йық облысты бояу ‰шін арналѓан функциялар:
a1) setfillstyle (бояу типі, т‰с);
М±ндаѓы бояу типініњ негізгі кодтары мен атаулары:
0 EMPTY_ҒILL фон т‰сімен бояу
1 SOLID_ҒILL кµрсетілген т‰спен т±тас толтыру
3 LTSLASH_ҒILL кµлбеу сызықтармен штрихтау
a2) floodfill(x, y, т‰с);
(x, y) — т±йық облыс ішінде жататын н‰кте, т‰с -т±йық облыс жиегініњ
т‰сімен бірдей т‰с (соњғы функция кµбірек пайдаланылады).
Экранды тазалау (орнатылѓан параметрлерді алып тастап, алѓашқы
графикалық режімге µту):
cleardevice ();
Берілген графикалық режімде н‰ктелер координаттарыныњ ең ‰лкен
мғндерін анықтайтын функциялар:
getmaxx (); - кµлденеңі бойынша, getmaxy (); - тігі бойынша.
Графикалық экранды тазалау: clearviewport ():
Ағымдық координаттарды анықтау: getx(); gety();
Графикалық режімде жадты тазалап, алѓашқы мғтіндік режімге µту:
closegraph ();
Графикалық экран ішінде терезе ашу:
setviewport (xl, yl, x2, y2, clip);
-(xl, yl), (x2, y2) - терезеніњ сғйкес сол жақ жоѓарѓы тµбесі мен оњ
жақ тµменгі тµбесініњ координаттары;
clip - кесіп тастау коды. Егер clip=l, онда терезеге сыймайтын кескін
элементтері анынып тасталады, егер clip=0 болса, терезе шекаралары
ескерілмейді.
Геометриялық объектілерді сызу операторлары
1. (xl, yl), (x2, y2) н‰ктелерін қосатын т‰зу кесіндісі:
line (xl, yl, x2, y2)
ал, lineto (x, y) - функциясы ағымдық н‰ктеден (x, y) н‰ктесіне дейін
т‰зу кесіндісін сызады.
Сғйкес сол жақ жоѓарѓы жғне оњ жақ тµменгі координаттары (xl, yl),
(x2, y2) болатын тік тµртб±рыш:
rectangle (xl, yl, x2, y2);
Орталық н‰ктесі (x, y) шењбер:
circle (x, y, радиус);
. Шењбер доғасын сызу:
arc (x, y, баст_бүрыш, соњғ._б±рыш, радиус);
- б±рыштар градустық µлшеммен беріледі жғне сағат тіліне қарсы
есептеледі.
М±ндаѓы ескеретін жайт: кескіндерді салу пиксельдік н‰ктелер бойынша
орындалады.
Жартылай µстері rx, rу болатын боялѓан эллипсті орнату,
(x, y) — орталық н‰ктесі:
ғillellipse (x, y, rx, ry);
Эллипс доғасын сызу:
ellipse (x, y, баст_б±рыш, соњғ._б±рыш, rx, ry );
Боялѓан тік тµртб±рышты салуѓа арналѓан функция:
bar (xl, yl, x2, y2);
- (xl, yl,), (x2, y2) - сғйкес сол жақ жоѓарѓы жғне оњ жақ тµменгі
тµбелерініњ координаттары. Тµртб±рыш алдын ала салынған т±йык, облысты бояу
т‰сімен боялып кµрсетіледі жғне контуры сызылмайды.
Контур іші боялѓан параллелепипед сызу функциясы:
bar3d (xl, yl, x2, y2, тереңдігі, тµбесі);
м±нда параллелепипедтің алдыњѓы жағы боялып кµрсетіледі. Тереңдік ‰шін
20 .. 30 аралығындағы б‰тін санды алу жеткілікті, тµбе ‰шін 1 саны алынады.
Ол параллелепипед тµбесін сызып кµрсетеді ( 0 саны жазылса, тµбе
сызылмайды).
Орталық н‰ктесі (x, y), боялѓан дµңгелек секторы:
pieslice(x, y, баст_б±рыш, соњғ_б±рыш, радиус);
контуры кµрсетілген жғне боялѓан сектор сызылады. Боялу т‰сі мен сызық
қалындыѓы алдын ала енгізілген setlinesyle() функциясы бойынша орнатылады.
Боялѓан эллипстік сектор:
sector (x, y, баст_б±рыш, соњғ_б±рыш, rx, гу);
Салынған ‰шб±рыш, тік тµртб±рыш, шеңбер сияқты фигураларды ағымдық
кезде µшіріп, фигуралардыњ "қозѓалуын" кµрсететін (анимация ±йымдастыратын)
функция:
setwritemode (режім);
режім ‰шін алынатын кодтар:
0- кµшіру;
1- экранда сызулы кескінді "µшіру";
2- стандартты режім.
Мундағы 1 (бір) - т‰рлі сызықтармен қ±растыру кезінде шыѓарып тастау
операциясын орындайды. Оныњ ерекшелігі: бір сызық т±рѓан орнына ғкелінген
кезде ол кµрінбей ("µшіп") калады, одан шығу кезінде ол қайта кµрінеді.
Яғни, функцияны анимация ±йымдастыру ‰шін пайдалануға болады.
Қозғалуды ±йымдастыратын басқа функциялар да бар:
getimage(), imagesize() жғне putimage(). getimage() функциясы арқылы
бейне экранныњ берілген бµлігіне жазылады да, бейнені сақтайтын жад кµлемін
анықтау ‰шін imagesize() функциясы шақырылады. Одан әрі putimage()
функциясы арқылы оны экранныњ қалаған жеріне шақыруға болады.
Н‰кте орнату:
putpixel (x, y, т‰с);
М±ндаѓы x, y — терезеніњ координаттар ж‰йесінде пиксель µлшемімен
орнатылатын н‰кте.
Терезеде мғтін орнату:
outtextxy (x, y, mn);
М±ндаѓы x, y - мғтін шыѓарылатын бастапқы н‰кте, mn — шыѓарылатын
жолға жазылатын мғтін мазм±ны. Ол тырнақшалар ішінде жазылады. Режімде
жолды ағымдық позициядан бастап шыѓаратын
outtext() функциясы да бар.
Тµменгі функцияны пайдаланып, мғтінді т‰рлі т‰рде шыѓаруға болады.
settextstyle (шрифт, бағыт, µлшем);
шрифт (қаріп) параметрлерініњ негізгілері:
0 DEҒAULT _ҒONT стандартты
3 SANS_SERIҒ_ҒONT тікесінен жазу
бағыт параметрлері:
0 HORlZ_DIR солдан оњға қарай
1 VERT DIR тµменнен жоғарыға
µлшем - коды 1 .. 10 аралыѓында алынатын б‰тін сан. Стандартты шрифт
‰шін µлшем коды 4-ке тењ етіп алынады, ол - 32 x 32 пиксельдік µлшем.
Фигуралар салу программалары
Экран бетіне ақ т‰сті шеңбер, тік тµртб±рыш жғне т‰зу кесіндісін салу
керек. Олардыњ астыңғы қатарына Шеңбер, Тік тµртб±рыш, Кесінді сµздері
жазылып қойылсын.
#include stdio.h
#include conio.li
#include stdlib.h
#include graphics.h
main ()
{
int gd, gm, error; clrscr ();
detectgraph (&gd, &gm);
initgraph (&gd, &gm, "c:\\Borland\\bgi");
error=graphresult (); iғ (error != grOK)
{ puts (grapherrormsg(error)); exit (-1); }
* кµгілдір экранда ақ т‰с орнату *
setbkcolor (1); setcolor (15);
* объектініњ ерекшеліктерін орнату *
setlinestyle (0, 0, 0);
* экранды тазалау *
cleardevice ();
* шыѓару терезесін орнату, оны тазалау *
setviewport (10, 10, getmaxX()-50, getmaxY() -50,
clearviewport ();
* қажетті т‰стерді дайындап, фигуралар салу*
setbkcolor (0); setcolor (15);
circle (70, 70, 50);
rectangle(180, 30, 250, 150);
line (280, 70, 400, 150);
settextstyle (0, 0, 0);
outtextxy (40, 140, "Шеңбер");
outtextxy (160, 160, "Тіктµртб±рыш");
outtextxy (380, 160, "Кесінді");
getch (); closegraph (); return 0;
}
Ішіне 75%, 25% жазулары жазылѓан боялѓан дµњгелек сектор мен контуры
бар эллипс секторын сызу керек.
Программа ‰зіндісі:
main ()
{
int gd, gm; clrscr ();
initgraph (&gd, &gm, " "); setbkcolor (1);
setcolor (4); setғilestyle (1, 3);
circle (70, 70, 50);
x= getmaxx()2; y= getmaxy()2;
setfillstyle (1, 2);
pieslice (100, 100, 0, 80, 90);
sector (250, 250, 0, 50, 200, 120);
settextstyle (1, 0, 2);
moveto (80, 60); outtext ( "75%");
* (80,60) н‰ктеден бастап *
moveto (120, 110); outtext ("25%");
getch();
closegraph (); return (0);
}
Экранда кездейсоқ орналасқан 70-тей ж±лдыз жғне ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz