- •Тема_7: Робота в графічному режимі
- •Приклади побудови графічних зображень.
- •Створення ефекту руху зображення в графічному режимі.
- •1. Текстовий та графічний режими роботи
- •2. Ініціалізація графічного режиму
- •InitGraph (grDriver, grMode, “шлях до драйвера”);
- •3. Бібліотека Graph
- •Стандартні процедури та функції для побудови графічних зображень
- •4. Приклади побудови графічних зображень
- •Var grDriver: integer;
- •Var grDriver:integer;
- •InitGraph(grDriver,grMode,grPath);
- •Var grDriver:integer;
- •InitGraph(grDriver,grMode,grPath);
- •5. Створення ефекту руху зображення в графічному режимі
- •Var grDriver:integer;
- •I:integer;
- •Var grDriver:integer;
- •I:integer; {параметр циклу}
- •InitGraph(grDriver,grMode,grPath);
- •6. Відтворення звуку
Var grDriver:integer;
grMode: integer;
k,s: integer; {додаткові доданки}
a,b:integer; {довжина ребра паралелепіпеда та висота піраміди}
grPath:string;
z:real; {площа бічної поверхні фігури}
bik,zad:array[1..8] of integer; {масив координат точок правої бічної та задньої граней}
Begin
clrscr;
write(' а=');
readln(a);
write('b=');
readln(b);
z:=4*(sqr(a)+sqr(b)*sqrt(3));
writeln('Площа бічної поверхні фігури =',z:5:2,' (кв. од.)');
readln;
grDriver:=Detect;
grPath:='C:/bp/bgi';
k:=a*20;
s:=b*20;
InitGraph(grDriver,grMode,grPath);
Rectangle(200,200,200+k,200+k);
bik[1]:=200+k;
bik[2]:=200;
bik[3]:=200+k+k div 2;
bik[4]:=200-k div 2;
bik[5]:=200+k+k div 2;
bik[6]:=200+k-k div 2;
bik[7]:=200+k;
bik[8]:=200+k;
DrawPoly(4,bik); {права бічна грань паралелепіпеда}
SetLineStyle(DashedLn,1,NormWidth);
zad[1]:=200+k+k div 2;
zad[2]:=200-k div 2;
zad[3]:=200+k div 2;
zad[4]:=200-k div 2;
zad[5]:=200+k div 2;
zad[6]:=200+k-k div 2;
zad[7]:=200+k+k div 2;
zad[8]:=200+k-k div 2;
DrawPoly(4,zad); {задня грань паралелепіпеда}
Line(200+k div 2,200+k-k div 2,200,200+k);
Line(200,200,200+k+k div 2,200-k div 2);
Line(200+k div 2,200-k div 2,200+k,200);
Line(200+k div 2+(k div 2)div 2,200-(k div 2)div 2+1,200+k div 2+(k div 2)div 2,200-(k div 2)div 2+1-s);
Line(200+k div 2,200-k div 2,200+k div 2+(k div 2)div 2,200-(k div 2)div 2+1-s);
SetLineStyle(SolidLn,1,NormWidth);
Line(200,200,200+k div 2,200-k div 2);
Line(200,200,200+k div 2+(k div 2)div 2,200-(k div 2)div 2+1-s);
Line(200+k,200,200+k div 2+(k div 2)div 2,200-(k div 2)div 2+1-s);
Line(200+k+k div 2,200-k div 2,200+k div 2+(k div 2)div 2,200-(k div 2)div 2+1-s);
SetColor(green);
OutTextXY(200,10,'Вигляд фігури');
OutTextXY(200+k div 2,200+k-10,'a');
OutTextXY(200+k div 2+(k div 2)div 2-5,200-s+(k div 2)div 2,'b');
readln;
CloseGraph; {вихід з графічного режиму}
readln;
End.
Результати виконання програми:
a=5
b=4
Площа бічної поверхні фігури =210.85 (кв. од.)
Вигляд фігури
5. Створення ефекту руху зображення в графічному режимі
Ефект руху зображення в графічному режимі досягається за допомогою введення процедур, які викреслюють зображення, в цикл, додавання до координат зображення параметра циклу в будь-якому виразі, очищення екрану за допомогою процедури ClearDevice та затримки відтворення зображення на екрані за допомогою процедури Delay (тривалість затримки в мілісекундах).
Приклад 4. Відтворити за допомогою анімації рух зеленої кулі, радіусом 30, вздовж діагоналі монітора.
Текст програми:
Program PR4;
Uses Graph,Crt;
Var grDriver:integer;
grMode:integer;
grPath:string;