XnitGraph (gd,gm,’’);

SetColor(brown);

SetFillStyle(1,brown);

FillEllipse(R,R,R,R);

Size :- ImageSize(0,0,2*R,2*R);

GetMeM(BitMap,Size); GetImage(0,0,2*R,2*R,BitMap^);

repeat

delay(Time);

Putlmage(x,y,BitMap^,1);

x:=x+Step_x; y:=y+Step_y;

if (x+2*R >= getmaxx) or (x<=0) then Step_x:=-Step_x;

if (y+2*R >= getmaxy) or (y<=0) then Step_y:=-Step_y;

Putlmage(x,y,BitMap^,1);

until keypressed;

readkey;

CloseGraph;

end.

Третій метод, що дозволяє ще зменшити миготіння мультиплікаційного об’єкта на екрані, це використання графічних сторінок. Відомо, що при ініціалізації графічного режиму ми задаємо два параметри:

Gd - тип графічного адаптера (CGA, EGA, VGA і т.д.);

Gm - режим роботи графічного адаптера.

Залежно від цих параметрів на екран можна виводити зображення з різною роздільною здатністю та палітрою. Крім того, існують деякі режими, що підтримують кілька графічних сторінок, кожна з яких може містити різні зображення. В один момент часу ми можемо бачити тільки одну сторінку, але в той самий момент можемо готувати складне зображення на інших сторінках і потім миттєво виводити їх на екран, зменшуючи таким чином миготіння (людина не бачить малювання окремих деталей пейзажу). Один з таких режимів Gm=VGAMed дозволяє програмісту виводити 16-кольорове зображення з роздільною здатністю 640 на 350 пікселів, при цьому він підтримує дві графічних сторінки.

Для того, щоб скористатися цими сторінками, ми можемо в програмі застосувати дві процедури:

SetActivePage(Page) - задається номер активної сторінки (Page), тобто сторінки, на якій у даний момент буде будуватися зображення;

SetVisualPage(Page) - задається номер візуальної сторінки, тобто тієї сторінки, що являється видимою в даний момент.

У запропонованому режимі існує тільки дві сторінки, що мають номера 0 та 1, тому зміну сторінок можна виконувати змінною Page, що буде змінюватись за наступним законом: Page := 1 - Page, причому активна сторінка стає видимою тільки після того, як на ній повністю побудовано нове зображення.

Покажемо застосування цього прийому на задачі.

ЗАДАЧА № 627

Умова: Скласти програму, яка виводитиме на екран рух тіла, кинутого під кутом до горизонту. Опором повітря знехтувати.

Розв’язування: Програма, що реалізує описаний алгоритм, наведена нижче. В ній використовуються наступні константи: Color - колір тіла, що кинуто; Radius - радіус тіла; Time - затримка зображення на екрані (підбирається емпіричним шляхом в залежності від типу комп’ютера).

Program Example_627_m;

uses crt,graph;

const g=9.8;

Color = 2; Radius =20; Time = 500;

var gd,gm:integer;

Page:byte;

Vx,Vy,X,Y:real;

begin

gd:=VGA; gm:=VGAMed; InitGraph (gd,gm,”);

Vx:=40; Vy:=30; X:=15; Y:=160;

SetColor (Color); SetFillStyle(1,Color);

repeat

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату