Begin
Clrscr;
Writeln(‘Введіть Ваш вибір: Д - день, Н - ніч.’);
Readln(ch);
GraphDriver:=VGA; {Ініціалізація графічного режиму)
GraphMode:=VGAHi;
InitGraph(GraphDriver,GraphMode,’’);
if (Сh=’Д’) or (Ch=’д’) then
begin
setfillstyle(l,yellow);
setcolor(yellow);
fillellipse(100,80,50,50); {Малювання сонця)
{Малювання променів)
line(100,80,250,80); line{100,80,240,30);
lіnе(100,80,200,250); line(100,80,230,180) ;
line(100,80,150,250); line(100,80,100,300);
line(100,80,50,380); line(100,80,20,280);
line(100,80,0,150); line(100,80,0,80) ;
line(100,80,0,30); line(100,80,10,0) ;
line(100,80,50,0); line(100,80,100,0) ;
line(100,80,150,0);
end
else
if (Ch=’H’) or (Ch=’H’) then
begin
setfillstyle(l,yellow); setcolor(yellow);
fillellipse(100,80,50,50); setfillstyle(1,black) ;
setcolor(black); fillellipse(130,80,50,50) ;
end
else writeln(‘Ви помилилися!’);
Readkey; Closegraph;
End.
ЗАДАЧА № 607
Умова: «Зоряне небо». Заповнити екран монітора різнокольоровими точками, кількість яких, колір та координати визначаються випадково.
Розв’язок: Для вибору випадковим чином вказаних величин скористуємось функцією Random , що вибирає числа із заданого діапазону, причому врахуємо, що, якщо в дужках після функції вказане ціле число, то будуть генеруватися цілі числа в діапазоні від 0 до вказаного числа. Зверніть увагу на те, що всього можливих кольорів 16 (від 0 до 15), але на чорному тлі чорний колір (з нульовим номером) не видимий, тому можна скористатися такою формулою для отримання ненульових цілих чисел в діапазоні від 1 до 15: random (14) + 1
Аналогічно можна вибрати координати та кількість «зірок» (точок) на екрані, причому відслідкувати, щоб кількість ніколи не була нульовою. Сама «зірка» (точка) на екрані може бути отримана процедурою Putpixel , що задає колір та координати точки виведення. Програма має вигляд:
Program Example_607;
Uses graph;
Var GraphDriver,GraphMode:integer;
x,y,color,N:integer; {x,y - координати точки - ‘Зірки’,
color - колір точки, N - кількість точок}
і:integer; {і - змінна циклу}
Begin
Randomize;
GraphDriver:=VGA; GraphMode:=VGAHi;
InitGraph(GraphDriver,GraphMode,’’);
{Генерується кількість точок в діапазоні від 200 до 1200}
N:=random(1000)+200;
for i:=1 to N do
begin
x:=random(640); у:=random(480); color:=random(14)+l;
putpixel (x,y, color) ; {Виведення піксела заданого кольору color у задані координати екрану х та у}
end;
Readkey;
Closegraph;
End.
Домашнє завдання:
• Повторити сторінки 221 - 229 запропонованого підручника;
• Задачі № 603 (26, 8), 605,606, 608.
УРОК 32. Ділова графіка
Мета уроку: показати можливості роботи з діловою графікою засобами мови Паскаль на прикладах розв’язання задач.
На цьому уроці пропонується показати можливості мови Паскаль при побудові графіків функцій та різного виду діаграм.
ЗАДАЧА № 614
Умова: Зобразити на екрані монітора декартову систему координат, початок якої збігається з центром екрана.
Розв’язування: Для малювання осей х та у слід скористатися процедурою line , причому координати початку та кінця цих прямих обчислити неважко, тому що вони мають розміщуватись в центрі екрану. Градуювання осей робиться теж за допомогою коротких відрізків довжиною 8 пікселів, що розташовані з кроком step пікселів (крок в програмі заданий у вигляді константи, хоча можна його задавати і іншим методом). Підписи на осях можна зробити таким чином: число, що треба написати, переводиться в рядок процедурою str , а потім виводиться на екран процедурою OutTextXy . Зверніть увагу на те, що на від’ємному проміжку вісі до числа ліворуч дописується знак «-» командою S := ‘-’ + S , де S— рядок, що містить підпис під поділкою. Для якісного оформлення малюнку використовується процедура settextjustify(1,1) , що забезпечує відцентроване виведення тексту у вказану позицію. Програма, що реалізує алгоритм, має вигляд:
Program Example_614;
Uses graph; {Підключення бібліотек}
Const
Step=25; {Крох між поділками на осях}
Var GraphDriver,GraphMode:integer;
x,у:integer; {x,y - координати центру декарт. сист. коорд.}
r:integer; {r - відстань від центру координат до чергової поділки}
Читать дальше