- •Розділ і. Вступ. Основи алгоритмізації Тема: Поняття архітектури комп’ютера фон Неймана.
- •Принцип використання двійкової системи числення
- •Принцип програмного керування роботою комп'ютера
- •Принцип збереження програм у пам'яті комп'ютера
- •Принцип адресності пам'яті
- •Тема: Алгоритм і його властивості.
- •Тема: Базові структури алгоритмів.
- •Метод вставок
- •Метод вибору
- •Розділ іі. Мова програмування паскаль. Тема: Методології розробки програм.
- •Тема: Загальні відомості про мову Паскаль.
- •Тема: Опис стандартних типів.
- •Тема: Циклічні конструкції.
- •Тема: Табличні величини. Масиви даних.
- •Тема: Рядкові типи.
- •Тема: Підпрограми.
- •Тема: Модуль Graph. Графічний режим.
- •Побудова рухомих зображень
- •Тема: Файловий тип.
- •Тема: Вказівники.
- •Тема: Тип запис.
- •Тема: Множинні типи.
- •Тема: Потоки. Введення-виведення даних.
- •Тема: Адреси даних. Вказівники. Динамічна пам'ять.
- •Тема: Розгалуження.
- •Тема: Основні відомості по структурному програмуванню.
- •Тема: Функції.
- •Тема: Масиви даних.
- •Робота з даними в динамічній пам'яті
- •Проблеми, що пов'язані з вказівниками
- •Тема: Форматування потоків.
- •Функції для управління графічною системою:
- •Функції для установки параметрів зображення:
- •Функції для отримання зображення на екрані:
- •Функції для отримання параметрів зображення:
- •Список літератури
Тема: Модуль Graph. Графічний режим.
Анімація засобами Turbo Pascal.
Чергування засвічувань і гасінь зображення використовують для імітації руху цього зображення на екрані. Перед наступним засвічуванням об’єкт треба змістити у напрямку переміщення. Рух зображення на екрані називається анімацією. Для імітації руху об’єкта на екрані потрібно виконати такий циклічний алгоритм.
Нарисувати об’єкт у потрібній точці й зробити паузу.
Знищити об’єкт, замалювавши його кольором тла.
Змінити координати об’єкта.
Перейти до пункту 1.
Щоб почати роботу над створення простішого "мультика" (зображення, що рухається), спочатку розберемося, як воно створюється в реальних умовах. Всі знають, що художник мультиплікатор малює серію зображень, в кожному з яких показується один і той же рух з ледь помітними змінами. Наприклад так, як це показано на наступному малюнку.
Тепер, якщо зображення швидко змінювати одне за одним, ми не помічаємо зміну малюнків, а бачимо рух цього персонажу (в даному випадку Незнайко піднімає руку). Поміркуємо, як відтворити послідовність схожих об'єктів на екрані монітору. Перше, що спадає на думку, це намалювати зображення, затримати його трохи на екрані, витерти зображення (очистити екран) та вивести нове зображення з ледь помітними змінами. При достатньо великій швидкості малювання око людини не помітить зміни малюнків і їй буде здаватися, що об'єкт рухається.
Приклад. Зобразити рух Сонця на блакитному небі в горизонтальному напрямку.
Program sun;
Uses crt, graph;
Var driver, mode,i: integer;
Begin
Clrscr;
Driver:=detect;
initgraph(driver, mode, ’’);
I:=0;
While I<=750 do
Begin
setbkcolor(14);
setfillstyl(1,14);
circle(i,100,50);
floodfill(i,100,14);
delay(200); {пауза 0,2 с}
setfillstyl(1,3);
setcolor(3);
circle(i,100,50);
floodfill(i,100,3);
I:=I+5
End;
End.
Недоліком програми є миготіння замальованого зображення.
Щоб додати виведеним символам ефект мерехтіння, при встановленні кольорів вказується константа Blink (або 16). Мерехтіння буде підтримуватися доти, поки не відбудеться установка кольору символів, що виводяться, без мерехтіння.
Приклад: TextColor(Yellow+Blink); Write('жовті символи, що миготять');
TextColor(12+16); Write('світло-червоні символи, що миготять');
TextColor(6); Write('коричневі символи');
Існують також процедури, що керують яскравістю зображення. Всі вони діють до їх скасування, тобто до встановлення іншого режиму:
LowVideo – встановлює режим мінімальної яскравості світіння виведених на екран символів.
NormVideo – встановлює режим нормальної яскравості світіння виведених на екран символів. Цей режим встановлюється автоматично при ініціалізації модуля Crt.
HighVideo – установлює режим максимальної яскравості світіння.
Існує можливість у будь-який момент роботи програми використовувати для виведення не весь екран, а деяку його частину, що називається вікном. Розмір вікна визначається користувачем, але не може перевищувати розміру екрана. Для організації вікон у Паскалі використовується процедура
Window(X1,Y1,X2,Y2); де X1, Y1 – координати лівого верхнього, а X2, Y2 - правого нижнього кута вікна. Розмір максимального вікна (повний екран) - (1,1,80,25), мінімального - один стовпчик на один рядок, тобто (1,1,1,1).
На екрані можуть знаходитися кілька вікон, але в поточний момент активним являється тільки одне з них, і всі дії, що програмуються користувачем, виконуються щодо поточного вікна.
Для формування складного зображення на екрані при виведенні інформації користувач повинен мати можливість переводити курсор у будь-яку позицію екрана. Для цього в мові Паскаль передбачені наступні процедури і функції:
GoToXY(X,Y:byte) – процедура переводить курсор у задану позицію екрану (або вікна) з координатами Х (стовпчик), Y (рядок); верхній лівий кут екрана має координати (1,1), а правий нижній в стандартному режимі (80,25);
WhereХ, WhereY – функції, що дозволяють одержати відповідні значення X- або Y- координати курсору щодо поточного вікна. Діапазон значень, що повертаються, визначається розмірами поточного вікна або повного екрана.
Приклад. Написати фрагмент програми, що виведе в середині екрану прізвище учня червоним кольором, а на наступному рядочку під прізвищем - ім'я жовтим кольором. Прізвище необхідно вивести підвищеною яскравістю, а ім'я з мерехтінням. Колір тла повинен бути синім.
program task;
uses crt;
begin
textbackground(blue); {встановлення кольору тла}
clrscr; {очищення екрану}
highvideo; {встановлення підвищеної яскравості зображення}
textcolor(red); {встановлення кольору виведення}
gotoxy(35,12); {переведення курсору в задану точку – центр екрану}
writeln('Ivanov'); {виведення прізвища}
normvideo;
textcolor(yellow+blink); {встановлення кольору виведення зображення з мерехтінням}
gotoxy(35,13);
writeln('Petro');
end.
