Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
самост1_1new_druk!!!.doc
Скачиваний:
24
Добавлен:
13.11.2019
Размер:
1.61 Mб
Скачать

Тема: Модуль Graph. Графічний режим.

Анімація засобами Turbo Pascal.

Чергування засвічувань і гасінь зображення використовують для імітації руху цього зображення на екрані. Перед наступним засвічуванням об’єкт треба змістити у напрямку переміщення. Рух зображення на екрані називається анімацією. Для імітації руху об’єкта на екрані потрібно виконати такий циклічний алгоритм.

  1. Нарисувати об’єкт у потрібній точці й зробити паузу.

  2. Знищити об’єкт, замалювавши його кольором тла.

  3. Змінити координати об’єкта.

  4. Перейти до пункту 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.