Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Initgraph(driver, mode,' ');

В-третьих, необходимо настроить среду PASCAL. Для этого в меню OPTIONS/DIRECTORIES среды в поле UNIT необходимо указать каталог, где размещен файл GRAPH.TPU.

Если вы затрудняетесь указать режим работы вашего видео­адаптера, то позвольте системе определить это самой с помощью функции DETECT.

PROGRAM PROBA;

USES GRAPH;

Var driver, mode : integer;

BEGIN

DRIVER := DETECT;

INITGRAPH(DRIVER, MODE, 'C : \BP\BGI');

Перед выходом из программы графический режим нужно за­крыть командой CLOSEGRAPH

Рассмотрим несколько примеров.

Задача 11.1 Построить семейство одинаковых кругов, центры которых расположены на синусоиде.

В данной задаче самое главное - правильно построить сину­соиду.

Во-первых, для того чтобы определить координаты точки на синусоиде, нужно отбросить дробные части у полученных значе­ний, т. к. координаты экрана только целые числа.

Во-вторых, необходимо подобрать коэффициент, который рас­тягивает синусоиду по оси Y. Если просто воспользоваться стан­дартной функцией SIN(X), то ее значение не превосходит едини­цы и при округлении мы получим прямую линию.

В-третьих, следует выбрать шаг, с которым мы будем продви­гаться по оси X.

В-четвертых, ось симметрии этой синусоиды должна прохо­дить в середине экрана.

В результате всех этих рассуждений мы получим следующую формулу расчета:

Y := GETMAXY DIV 2+TRUNC(50* SIN(10*X));

PROGRAM PRG11_1;

USES GRAPH, CRT;

Var driver, mode,

X, y : integer;

BEGIN

DRIVER := DETECT;

INITGRAPH(DRIVER, MODE, 'C : \BP\BGI');

SETCOLOR(3);

SETFILLSTYLE(1, 1);

FLOODFILL(1, 4, 1);

X:=- 5;

Y := GETMAXY DIV 2;

SETCOLOR(16);

REPEAT

X:=X+10;

Y := GETMAXY DIV 2+TRUNC(50* SIN(10*X));

SETFILLSTYLE(1, 10);

FILLELLIPSE(X, Y, 20, 20);

UNTIL X> = GETMAXX;

REPEAT

UNTIL KEYPRESSED;

CLOSEGRAPH

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- инициируем модуль GRAPH;

- устанавливаем синий цвет экрана, цвет заливки кругов и координаты начала синусоиды;

- организуем цикл, в котором располагаем круги по синусои­де, разворачивая ее вправо до конца экрана;

- по окончании вывода фиксируем синусоиду на экране до тех пор, пока не будет нажата любая клавиша.

Переменные:

X, Y - координаты центра очередной окружности;

DRIVER - тип графического драйвера;

MODE - режим работы графического адаптера.

Задача 11.2 Построить семейство разноцветных случайным образом расположенных окружностей.

В решении этой задачи нам поможет функция определения случайного числа RANDOM. Следующие 3 оператора позволят нам случайным образом вычислить координаты центра окружно­сти:

X := RANDOM(GETMAXX);

У := RANDOM(GETMAXY);

CIRCLE(X, Y, 10);

а оператор закрашивает эту окружность случайным образом: SETCOLOR(RANDOM( 16)); PROGRAM PRG11_2;

USES GRAPH, CRT;

Var driver, mode,

X, y : integer;

BEGIN

DRIVER := DETECT;

INITGRAPH(DRIVER, MODE, 'C : \BP\BGI');

REPEAT

SETCOLOR(RANDOM(16));

X := RANDOM(GETMAXX);

Y := RANDOM(GETMAXY);

CIRCLE(X, Y, 10);

DELAY(10);

UNTIL KEYPRESSED;

CLOSEGRAPH

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- инициируем модуль GRAPH;

- организуем цикл, в котором располагаем разноцветные ок­ружности радиуса 10, размещая их по экрану случайным об­разом до тех пор, пока не будет нажата любая клавиша.

Переменные:

X, Y - координаты центра очередной окружности;

DRIVER - тип графического драйвера;

MODE - режим работы графического адаптера.

Задача 11.3 Построить семейство разноцветных случайным образом расположенных квадратиков.

PROGRAM PRG11_3;

USES GRAPH, CRT;