Малювання рухомих об'єктів

§ 6.4. Малювання рухомих об'єктів

Об'єкт сприймається як рухається, якщо змінюється його місце розташування на екрані. Переміщення об'єкта програмується за допомогою циклу, на кожному кроці якого координати об'єкта змінюються на деяку величину, постійну, якщо він рухається з постійною швидкістю і змінюється, якщо об'єкт рухається нерівномірно.

На кожному кроці циклу, повинні бути обчислені нові координати об'єкта, він повинен бути намальований, а потім стертий, щоб на наступному кроці його можна було намалювати в новому місці.

При визначенні порядку написання операторів усередині циклу, потрібно зробити все, щоб час, який очі людини розглядають об'єкт, було максимальним, а час, коли об'єкт стертий - мінімальним. Для цього використовують наступний алгоритм малювання рухомих об'єктів.

На кожному кроці циклу:

1. об'єкт стирається (т. Е. Малюється кольором фону);

2. обчислюється значення нових координат об'єкту;

3. об'єкт малюється;

4. організовується припинення виконання програми, щоб очі людини сприйняли образ об'єкта.

У даній програмі вагон рухається по рейках направо.

grDriver, grMode, i, x: integer;

grDriver: = detect; <Инициализация (включение )>

InitGraph (grDriver. GrMode, ''); <графического режима>

line (20,453,1250,453); <Рисование неподвижной дорожки для вагона>

x: = 100; <Начальная координата середины вагона>

for i: = 0 to 100 do

Setcolor (0); <Начало блока стирания объекта>

circle (x -100,430,20);

circle (x +100,430,20);

x: = x +10; <Вычисление новой координаты вагона>

Setcolor (11); <Начало блока рисования объекта>

circle (x +100,430,20);

delay (100); <Задержка во времени>

У результаті повинно вийти приблизно те, що зображено на рис. 6.5.

Малювання рухомих об'єктів

Мал. 6.5.Результат роботи програми з § 6.4 (червона крапка поставлена ​​умовно, це опорна точка і в програмі вона не малюється)

Отже, рух об'єкта (вагон) в цій програмі організовується в циклі. Для того щоб всі крапки об'єкта рухалися узгоджено, потрібно вибрати опорну точку (тут це (100,430) - середина вагона) і всі інші точки розраховувати через її координати. Ці координати краще оформити як константи на початку циклу. Зверніть увагу на те, що стирання та малювання виробляються однаковими наборами операторів.

Якщо в задачі потрібно намалювати об'єкт з окремими частинами, що рухаються, зручно намалювати нерухому частину об'єкта до циклу, а рухомі частини - всередині циклу.

Швидкість руху вагона в представленій програмі можна регулювати зміною збільшення координати x і часу затримки.

Схожі статті