ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

235892
знака
25
таблиц
6
изображений

1 ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

#

ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

* procedure SetUserCharSize(MultX,DivX,MultY,DivY:word);

Используется после установки штрихового шрифта с целью измене-

 ния пропорций символов. Отношение MultX/DivX -коэффициент масштаби-

 рования обычной ширины используемого архивного штрихового шрифта.

2MultY/DivY - коэффициент масштабирования высоты шрифта.

#

ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

* function TextHeight(TextString:strig):word;

Возвращает высоту заданной текстовой строки TextString в элемен-

 тах изображения(пикселах) с учетом всех установок, выполненных ранее

 процедурами SetTextStyle и SetUserCharSize .

* function TextWidth(TextString:string):word;

Возвращает ширину заданной текстовой строки TextString при тех

 же условиях, что и функция TextHeight.

* procedure SetTextJustify(Horiz,Vert:word);

Обеспечивает привязку выводимого графического текста к теку-

 щему положению курсора. Параметры процедуры описаны в модуле Graph

 как константы и могут принимать следующие значения:

 Horiz: LeftText =0 - левым краем строки к курсору

CenterText=1 - симметрично к курсору

RightText =2 - правым краем строки к курсору

 Vert: BottomText =0 - строка над курсором

CenterText =1 - симметрично к курсору

TopText =2 - строка под курсором

По "умолчанию" устанавливается параметр привязки выводимого

 графического текста соответствующий обращению SetTextJustify(0,2);.

#

ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

* procedure OutText(TextString:string);

Выводит на экран последовательность символов, начиная с текущей

 позиции, которая меняется только если текст выводится горизонтально

 с левым выравниванием. Если текст не помещается в графическое окно,

 он либо вообще не высвечивается ("грубый" шрифт, принятый по умолча-

 нию), либо высвечивается частично("гладкий" шрифт).Текущий цвет

 текста задается процедурой SetColor . параметры шрифта - процедурами

 SetTextStyle SetTextJustify.Коэффициенты увеличения ширины и высоты

 штриховых шрифтов можно задать процедурой SetUserCharSize. Ширину и

 высоту строки определяют с помощью функций TextWidth TextHeight.

* procedure OutTextXY(X,Y:integer;TextString);

Выводит на экран последовательность символов начиная с позиции

 (X,Y) и возвращает курсор в положение, предшествующее обращению к

 данной процедуре.

* procedure GetTextSettings(var TextInfo:TextSettingsType);

Возвращает текущий тип текстового шрифта,его направление, раз-

 мер,параметры горизонтального и вертикального выравнивания, установ-

 ленные ранее процедурами SetTextStyle и SetTextJustify,либо по умол-

 чанию при вхождении в графический режим. Тип TextSettingsType описан

 в модуле Graph как запись, поля которой - Font,Direction:word;

 CharSize:CharSizeType; Horiz,Vert:word; - по смыслу и типу аналогич-

 ны одноименныым параметрам процедур SetTextStyle и SetTextJustify.

ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

В языке Turbo-Pascal предусмотрена возможность использовать

 новые штриховые шрифты,не входящие в систему фирмы Borland Interna-

 tional, но совместимых с этой системой по файловой форме представле-

 ния. Для этого необходимо файлы новых шрифтов, которые должны иметь

 расширение .chr, предварительно загрузить в каталог, содержащий файл

 Turbo.exe интегрированной среды Turbo-Pascal, а в прикладной

 программе использовать функцию InstallUserFont.

* function InstallUserFont(NewFont:string):integer;

Инсталлирует новый штриховой шрифт, т.е.вводит во внутреннюю

 таблицу шрифтов имя файла нового шрифта NewFont и возвращает номер

 этого шрифта в указанной таблице для использования в качестве значе-

 ния параметра Font процедуры SetTextStyly.

Внутренняя таблица может содержать до 10 имен шрифтов, из

 которых 4 стандартных в ней содержатся постоянно. В файловой системе

 лабораторных компьютеров содержатся файлы 4 нестандартных штриховых

 шрифтов с именами: Bold.chr, Goth.chr, Sans.chr,Trip.chr.

Если внутренняя таблица штриховых шрифтов переполнена, то

 функция возвращает значение 0 и, следовательно, устанавливается

 стандартный растровый шрифт. Для сброса внутренней таблицы шрифтов в

 исходное положение можно заново перезапустить операционную систему.

 На следующем экране Вы можете наблюдать примеры четырех нес-

 тандартных штриховых шрифтов, упомянутых в данном разделе.

#

ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

3

0

01КАКИЕ ВОЗМОЖНОСТИ , СВЯЗАННЫЕ С НАПРАВЛЕНИЕМ ВЫВОДА ТЕКСТОВОЙ

ИНФОРМАЦИИ, ДАЕТ ГРАФИЧЕСКИЙ РЕЖИМ?

1 Возможен только горизонтальный вывод.

2 Возможен как горизонтальный так и вертикальны выводы.

3 Горизонтальный, вертикальный и вывод по горизонтали.

4 Имеется возможность горизонтального вывода для всех шрифтов и

для растрового - вывод по вертикали.

*

 02УСТАНАВЛИВАЮТСЯ ЛИ ТИП СТАНДРАТНОГО ШРИФТА, НАПРАВЛЕНИЕ ТЕКСТОВОЙ

СТРОКИ И РАЗМЕР СИМВОЛОВ ОДНОЙ ПРОЦЕДУРОЙ?

1 Нет. Эти параметры устанавливаются разными процедурами:

InstallUserFont; - стандартный шрифт

TextWidth; - размер символов

OutText; - направление вывода

2 Да. Эти параметры устанавливаются с помощью одной процедуры,

InstalUserFont;

3 Да. Перечисленные параметры устанавливаются с помощью процедуры

SetTextStyle;

4 Нет. В языке нет возможности устанавливать шрифт, направление

строке и размер символов.

*

 03МОЖНО ЛИ ИЗМЕНИТЬ ПРОПОРЦИИ СИМВОЛОВ ЛЮБОГО ШРИФТА И ЕСЛИ МОЖНО, ТО

С ПОМОЩЬЮ КАКОЙ ПОЦЕДУРЫ?

1 Нет. Пропорции символов предусмотрены шрифтом и изменить их

нельзя .

2 Можно. С помощью процедуры SetUserCharSize .

3 Можно изменить пропорции только штрихового шрифта с помощью

процедуры SetUserCharSize.

4 Можно. С помощью процедуры SetTexStyle.

*

 04ЧЕМ ОТЛИЧАЮТСЯ ПРОЦЕДУРЫ OutText и OutTextXY?

1 Ничем. Они полностью аналогичны.

2 Процедуры отличаются привязкой выводимого текста.

3 Процедуры отличаются привязкой выводимого текста и положением

курсора после выполнения процедур.

4 Процедура OutText осуществляет вывод символьной строки с

текущего положения курсора, а процедура OutTextXY обеспечивает

привязку графического текста без его вывода.

*

 05СОСТАВИТЬ ПРОГРАММУ ВЫВОДА СЛОВА "ПРОГРАММА" ПО НИЖНЕЙ КРОМКЕ БЕЛОГО ЭКРАНА РАСТРОВЫМ ШРИФТОМ ЗЕЛЕНОГО (2) ЦВЕТА РАЗМЕРА 6.

1 SetBkColor(15);

SetColor(2);

SetTextStyle(1,0,6);

OutTextXY(0,GetMaxY,'ПРОГРАММА');

2 SetBkColor(15);

SetColor(2);

SetTextStyle(0,1,6);

OutTextXY(GetMaxX,0,'ПРОГРАММА');

3 SetBkColor(15);

SetColor(2);

SetTextStyle(0,6,1);

OutTextXY(0,GetMaxY,'ПРОГРАММА');

4 SetBkColor(15);

SetColor(2);

SetTextStyle(0,0,6);

OutTextXY(0,GetMaxY,'ПРОГРАММА');

*

 06СОСТАВИТЬ ПРОГРАММУ ГОРИЗОНТАЛЬНОГО ВЫВОДА СЛОВА "КЛАСС" В ВИДЕ

СТРОКИ ДЛИНОЙ 300 ПИКСЕЛОВ С ИСПОЛЬЗОВАНИЕМ ГОРИЗОНТАЛЬНО

ДЕФОРМИРОВАННОГО СТАНДАРТНОГО ШТРИХОВОГО ШРИФТА SanserifFont

КРАСНОГО (4) ЦВЕТА РАЗМЕРА 10.

1 SetColor(4);

SetTextStyle(SanSerifFont,HorizDir,10);

K:=TextWidth('КЛАСС');

SetUserCharSize(300,K,1,1);

2 SetColor(4);

SetTextStyle(SanSerifFont,VertDir,10);

K:=TextWidth('КЛАСС');

SetUserCharSize(300,K,1,1);

3 SetColor(4);

SetTextStyle(SanSerifFont,Horizdir,10);

K:=TextHeight('КЛАСС');

SetUserCharSize(1,1,300,K);

4 SetColor(4);

SetTextStyle(HorizDir,SanSerifFont,10);

K:=TextWidth('КЛАСС');

SetUserCharSize(300,K,1,1);

*

 07СОСТАВИТЬ ПРОГРАММУ ВЕРТИКАЛЬНОГО ВЫВОДА СЛОВА "ПАСКАЛЬ" В ВИДЕ

СТОЛБЦА ШИРИНОЙ 80 ПИКСЕЛОВ, ИСПОЛЬЗУЯ ВЕРТИКАЛЬНО-ДЕФОРМИРОВАННЫЙ СТАНДАРТНЫЙ ШТРИХОВОЙ ШРИФТ SmallFont СИНЕГО(1) ЦВЕТА РАЗМЕРА 5.

1 SetTextStyle(SmallFont,0,5);

SetColor(1);

L:=TextHight('ПАСКАЛЬ');

SetUserCharSize(1,1,80,L);

OutTextXY(10,200,'ПАСКАЛЬ');

2 SetTextStyle(SmallFont,1,5);

SetColor(1);

L:=TextHight('ПАСКАЛЬ');

 SetUserCharSize(80,L,1,1);

OutTextXY(10,200,'ПАСКАЛЬ');

3 SetTextStyle(SmallFont,1,5);

SetColor(1);

L:=TextHeight('ПАСКАЛЬ');

SetUserCharSize(1,1,80,L);

OutText('ПАСКАЛЬ');

4 SetTextStyle(1,5,SmallFont);

SetColor(1);

L:=TextHeight('ПАСКАЛЬ');

SetUserCharSize(1,1,80,L);

OutText('ПАСКАЛЬ');

*

 08СКОЛЬКО НЕСТАНДАРТНЫХ ШРИФТОВ МОЖНО ИСПОЛЬЗОВАТЬ ПРИ РАБОТЕ С ГРАФИ ЧЕСКИМИ ТЕКСТАМИ?

1 Сколько угодно.

2 11 шрифтов.

3 Столько, сколько файлов нестандартных шрифтов содержится в

Вашем компьютере.

4 В Turbo-Pascal не предусмотрена возможность использования

шрифтов , не входящих в систему фирмы Borland International.

*

 09СКОЛЬКО ИМЕН РАЗЛИЧНЫХ ШРИФТОВ МОЖЕТ СОДЕРЖАТЬ ВНУТРЕННЯЯ ТАБЛИЦА ШРИФТОВ И СКОЛЬКО ИЗ НИХ НЕСТАНДАРТНЫХ?

1 Не более 6, из них нестандартных - не более 2.

2 Не более 10, из них нестандартных - не более 6.

3 Не более 11, из них нестандартных - не более 7.

 4 Не более 10, из них нестандартных - не более 4.

*

 10КАКАЯ ПРОЦЕДУРА ИНСТАЛЛИРУЕТ НОВЫЙ ШТРИХОВОЙ ШРИФТ?

1 InstallUserFont;

2 GetTextSettings.

3 SetUserCharSize.

4 SetTextJustify.

*

0

011Ответ неверный. В Turbo-Pascal имеется возможность не только 002

горизонтального , но и вертикального вывода.

*

2Ответ правильный. 005

*

3Ответ неверный. В языке нет возможности вывода графического текста 002

в направлении по горизонтали.

*

4Ответ неверный. Ограничений на тип шрифта для осуществления 002

вертикального вывода нет.

*

*

 021Ответ неверный. Перечисленные процедуры выполняют другие функции. 002

*

2Ответ неверный. Процедура InstallUserFont инсталлирует новый 002

нестандартный шрифт.

*

3Ответ правильный. 005

*

4Ответ неверный. Такая возможность есть.  002

*

*

 031Ответ неверный. Пропорции символов увличить можно. 002

*

2Ответ неточный.Процедура SetUserCharSize изменяет пропорции символов004

после установки штрихового шрифта процедурой SetTextStyle.

*

3Ответ правильный. 005

*

4Ответ неверный. Процедура SetTextStyle устанавливает тип шрифта, но 002

не устанавливает пропорции символов.

*

*

 041Ответ неверный. Эти процедуры отличаются привязкой выводимого текста002

и положением курсора после их выполнения.

*

2Ответ неполный. Процедуры отличаются не только привязкой выводимого 004

графического текста, но и положением курсора после их выполнения

*

3Ответ правильный.  005

*

4Ответ неверный. Обе процедуры обеспечивают вывод символьной строки, 002

однако отличаются местом привязки выводимой строкви и положением

курсора после их выполнения.

*

*

 051Ответ неверный. Чтобы вывести строку растровым шрифтом следует 002

параметры процедуры SetTextStyle выбрать иначе.

*

2Ответ неверный. Параметры процедуры SetTextStyle указывают на то, 002

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

вверх. Кроме того координаты начальной точки вывода в процедуре

OutTextXY соответствуют правому верхнему углу экрана и значит

надпись не будет выведена.

*

3Ответ неверный. Неверно указаны параметры процедуры SetTextStyle 002

Стандартного шрифта с номером 6 не существует.

*

4Ответ правильный. 005

*

*

 061Ответ правильный. 005

*

2Ответ неверный. Данный фрагмент программы будет обеспечивать не 002

горизонтальный, в вертикальный вывод текста .

*

3Ответ неверный. Данный фрагмент программы будет обеспечивать не 002

горизонтальную, а вертикальную деформацию вывдимой строки.

*

4Ответ неверный. Ошибка в употреблении параметров процедуры 002

SetTextStyle.

*

*

 071Ответ неверный. Строка, выводимая с помощью данного фрагмента прог- 002

раммы будет располагаться горизонтально, а не вертикально как тре-

бует задание.

*

2Ответ неверный.С помощью данного фрагмента программы будет проведена002

горизонтальная деформация относительно первоначальной высоты

символов.

*

3Ответ правильный. 005

*

4Ответ неверный. Неправильно указаны значения параметров процедуры 002

SetTextStyle.

*

*

 081Ответ неверный. Использовать можно столько нестандартных шрифтов, 002

сколько файлов с такими шрифтами содержится в Вашем компьютере.

*

2Ответ неверный. Использовать можно стольконестандартных шрифтов, 002

сколько файлов с такими шрифтами содержится в Вашем компьютере.

*

3Ответ правильный. 005

*

4Ответ неверный . Такая возможность имеется . 002

*

*

 091Ответ неврный. Таблица может содержать до 10 шрифтов, из них 6 002

нестандартных.

*

2Ответ правильный. 005

*

3Ответ неверный. Таблица может содержать до 10 шрифтов, из них 6 002

нестандартных.

*

4Ответ неверный. Таблица может содержать до 10 шрифтов, из них 6 002

нестандартных.

*

*

 101Ответ правильный. 005

*

2Ответ неверный. Процедура GetTextSettings возвращает текущий тип 002

текстового шрифта.

*

3Ответ неверный. Процедура SetUserCharSize используется для изменения002

пропорций символов.

*

4Ответ неверный. Процедура SetTextJustify обеспечивает привязку 002

выводимого текста к текущему положению курсора.

*

*

0

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

В данном разделе Вы ознакомитесь с возможностями компьютера

 в области мультипликации, т.е. созданием эффекта движения статичес-

 ких изображений.

Этот эффект можно достич используя динамическую и видеопамять

 компьютера, одноканальный звукогенератор, возможность сдвига и нало-

 жение изображений. Динамическая память используется для сохранения

 образа подвижного обьекта и ,возможно, образа фона изображения и не

 связывает пргограммиста с предопределенными размерами сохраняемых

 фрагментов экрана.

Эффект движения создается циклическим уничтожением обьекта в

 старом положении и выводом его образа из динамической памяти на

 экран в новое положение. Уничтожение осуществляется либо заменой

 соответствующего фрагмента экранного изображения образом фона из

 динамической памяти, либо наложением на него образа такого же обь-

 екта из динамической памяти с проведением поразрядной логической

 операции суммирования по mod 2.

Имеется возможность создания изображения одновременно на двух

 страницах видеобуфера и таким образом осуществлять мгновенную смену

 изображений на экране дисплея.

Рассмотрим процедуры, обеспечивающие эти возможности.

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

* function ImageSize(X1,Y1,X2,Y2:word):word;

Возвращает число байт,необходимых для сохранения прямоугольлной

 области экранного изображения.Параметры (X1,Y1),(X2,Y2) задают соот-

 ветственно координаты левого верхнего и правого нижнего узлов сохра-

 няемой области экрана. Определяемый обьем памяти включает в себя

 обьем растрового образа сохраняемой области экрана и два двухбайтных

 слова, используемые для хранения ширины Width=X2-X1+1 и высоты

 heidht=Y2-Y1+1 этой области.

Если обьем памяти, необходимый для сохранения области экрана,

 превышает или равен 64К, то функция возвращает значение 0, а вспомо-

 гательная функция GraphResult возвращает значение - 11(константа

 grError). Учитывая, что в системе Turbo-Pascal при использовании

 графического адаптера EGA независимо от графического режима полному

 экрану соответствует дисплейная страница обьемом 128К. Указанное

 ограничение по памяти эквивалентно ограничению площадей сохраняемых

 областей до 1/2 площади экрана.

Для сохранения фрагмента экрана в динамической памяти компью-

 тера необходимо создать соответствующую динамическую переменную. Это

 делает процедура GetMem.

* procedure GetMem(var p:pointer; Size:word);

Создает новую динамическую переменную размера Size, которая

 указывает размер динамической области в байтах, и помещает адрес

 начала этого блока памяти в ссылочную переменную p, совместимую по

 типу со всеми другими типами указателей.

На новую динамическую переменную можно ссылаться через указа-

 тель р^. Наибольший размер блока, который можно разместить единовре-

 менно, составляет 65 521 байт, наименьший - 1 байт.

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

Если динамическая область не фрагментирована, например в нача-

 ле программы, последовательные вызовы данной процедуры возвращают

 соседние блоки памяти. Когда в динамической области недостаточно

 места для размещения новой переменной, возникает ошибка времени вы-

 полнения программмы. Чтобы избежать этого можно использовать следу-

 ющую функцию.

* function MaxAvail:longint;

Возвращает размер наибольшего непрерывного свободного блока,

 имеющегося в динамической области памяти компьютера в текущий

 момент.

* procedure GetImage(X1,Y1,X2,Y2:word;var BitMap);

Сохраняет в динамической памяти растровый образ заданной

 прямоугольной области экрана. Параметры (X1,Y1),(X2,Y2) - координаты

 левого верхнего и правого нижнего узлов сохраняемой области экрана.

 BitMap - нетипизированный параметр, указывающий на динамическую пе-

 ременную хранения рассматриваемого изображения,которая создается

 предварительно процедурой GetMem.

Приведем фрагмент программы, в которой обеспечивается сохране-

 ние в динамической памяти прямоугольной области экрана с координа-

 тами левого верхнего угла (50,50) и правого нижнего угла (100,100):

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

.......

var p:pointer;

Size:word;

begin {тело программы}

........

Size:=ImageSize(50,50,100,100);

If MaxAvail<Size then begin RestoreCrtMode;

writeln('Мало динамической памяти');

Halt(1) end

else begin GetMem(p,Size);

GetImage(50,50,100,100,p^);

end;

........

end. {конец программы}

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

* procedure PutImage(X,Y:integer; var BitMap;BitBlt:word);

Выводит в заданное место экрана хранимое в динамической памяти

 растровое изображение и при необходимости определенным образом ком-

 бинирует его с предшествующим экранным изображением.

(X,Y) - Координаты верхнего левого угла размещения на экране

выводимого прямоугольного образа.

BitMap - Указывает на динамическую переменную хранения выводи-

мого изображения.

BitBlt - Определяет поточечную операцию между имеющимся и

выводимым изображениями и может принимать значения

следующих операций:

 NormalPut = 0; - простое замещение - исходное изображение замещается

выводимым

 XORPut = 1; - сложение по модулю 2 - коды цветов одноименных то-

чек складываются по модулю 2

Например, если точку с цветом 4(красный) вывести в точку с

 цветом 4(красный), то на экране получим точку с цветом, код которого

 соответствует значению следующего выражения:

4(10)+4(10) = 0100(2)+0100(2) = 0000(2) = 0(10) ,

 т.е. получим точку черного цвета.

 OrPut = 2; - поразрядная операция ИЛИ - выполняется поточечная

 операция ИЛИ

Например, 4(10) или 4(10)=0100(2)или 0100(2)=0100(2)=4(10),

 т.е. получим точку того же цвета.

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

 AndPut = 3 - поразрядная операция И - выполняется поточечная

операция И

Например, 4(10)&4(10)=0100(2)&0100(2)=0100(2)= 4(10),

 т.е. получим точку того же цвета.

 NotPut = 4 - замещение с поразрядной инверсией - полное замещени ис-

ходного изображения в области вывода

предварительно инвертированным выво-

димым изображением

Например, точка с цветом 4(10) будет заменена точкой с цветом

- ----

4(10)= 0100(2) = 1011(2) = 11(10) - светло-бирюзовый

Процедура никогда не выполняет отсечения выводимого изображе-

 ния на границах текущего окна просмотра,если при этом оно не выходит

 за границы экрана. Если же выходит, то изображение не выводится

 вовсе, если это левая верхняя или правая границы экрана,и отсекается

 если это нижняя часть.

При неоднократном использовании динамической памяти с разными

 динамическими переменными она бысто "засоряется" и становится непри-

 годной к использованию. Чтобы этого избежать следует регулярно унич-

 тожать использованные динамические переменные. Для этого существует

 в модуле Sistem процедура Dispose.

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

* procedure Dispos(varp:pointer);

Уничтожает динамическую переменную, на которую указывает р и

 возвращает освобожденную память в пул динамической памяти системы.

 После использования данной процедуры значение ссылочной переменной

 становится неопределенным и обращение р^ приводит к ошибке.Необходи-

 мо вновь создать динамическую переменную.

Приведем пример программы, которая создает эффект движения по

 экрану обьекта в области 50*50 пикселов, первоначально размещенного

 у левой границы экрана, к его правой границе:

 .......

 var p:pointer;

I:integer;

 ......

 begin

 ......

GetMem(p,ImageSize(0,50,50,100)); {выделение динамической памяти}

GetImage(0,50,50,100,p^); {сохранение обьекта в памяти}

for I:=1 to (GetMaxX-50) do {перемещение обьекта}

begin PutImage(I-1,50,p^,XORPut);{уничтожение обьекта в прежнем

состоянии}

PutImage(I-1,50,p^,NormalPut);{копирование обьекта в новое

end; состояние

Dispose(p); {освобождение памяти}

 ......

 end.

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

1 Проиллюстрируем приведенный выше пример:

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

* procedure SetActivePage(Page:word);

Направляет весь последующий графический выод на страницу видео-

 буфера, задаваемую параметром Page. Эта страница может и не отобра-

 жаться в это время на экране дисплея. Таким образом обеспечивается

 построение новых изображений за счет времени просмотра текущих,чтобы

 затем мгновенно обновить экран и создать эффект движения.

Лабораторные компьютеры поддерживают двухстраничную организацию

 видеобуфера. Страницы имеют номера 0 и 1 и графический вывод

 по умолчанию осуществляется на 0-ю страницу.

* procedure SetVisualPage(Page:word);

Задает номер Page отображаемой на экран дисплейной страницы

 видеобуфера. По умолчанию визуализируется страница, на которую нап-

 равляется графический вывод.

Приведем пример программы, обеспечивающей создание эффекта

 перемещения обьекта как в предыдущем примере:

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

 ......

var:integer;

 ......

begin

 ...... {по умолчанию вывод и визуализация 0-страницы}

for I:=1 to(GetMaxX-50) do

{перемещение обьекта}

begin Bar(I-1,50,I+50-1,100);

{формирование обьекта в (I-1)положении}

SetActivePage(1);

{установка вывода на 1-ю страницу}

ClearDevice;

{очистка 1 страницы}

Bar(I,50,I+50,100);

{формирование обьекта в I положении}

SetVisualPage(1);

 {визуализация 1 страницы}

SetActivePage(0);

{установка вывода на 0-ю страницу}

ClearDevice;

{очистка 0-й страницы}

end;

 ......

 end.

#

ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН

* procedure Sound(Frequency:word);

Включает внутренний звукогенератор компьютера. Параметр

 Frequency задает частоту генерации однотонального звука в герцах

 в диапазоне от 37 до 32767.

Частоты первой октавы нотного ряда

 --------------------------------------------------------------------

 Ноты До Ре Ми Фа Соль Ля Си

 --------------------------------------------------------------------

 Частоты 523,3 587,3 659,3  698,5 784,0 880,0 987,7

 --------------------------------------------------------------------

Частоты нот каждой более высокой или низкой октавы прибли-

 женно получаются удвоением или делением на 2 частот одноименных нот

 последующей или предыдущей октавы соответственно.

Звуковой генератор работает под управлением специальной мик-

 росхемы-таймера и центральный процессор после выполнения процедуры

 Sound можежтж продолжать вычислительный процесс одновременно с рабо-

 той звукогенератора.

* procedure NoSond;

Прекращает работу звукогенератора. Приведем фрагмент программы

 программы, обеспечивающий воспроизведение ноты "До" в течение 3 сек.

 ...... Sound(523);

Delay(3000);

NoSound; ......

 ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН


Информация о работе «Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x»
Раздел: Информатика, программирование
Количество знаков с пробелами: 235892
Количество таблиц: 25
Количество изображений: 6

Похожие работы

Скачать
110612
10
19

... набор процедур и функций языков программирования Basic и Pascal, позволяют управлять графическим режимом работы экрана, создавать разнооборазные графические изображения и выводить на экран текстовые надписи. ГЛАВА 2. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПРОГРАММИРОВАНИЯ В КУРСЕ ИНФОРМАТИКИ БАЗОВОЙ ШКОЛЫ (НА ПРИМЕРЕ BASIC И PASCAL)   2.1 Разработка мультимедиа курса «Графические возможности языков ...

Скачать
46704
1
0

... деятельности во внешней речи про себя и этап выполнения деятельности в форме внутренней речи. Данные характеристики деятельности и этапы ее становления и определяют требования к составлению обучающих программ. 2. При оценке авторской технологии проверяйте ее на соответствие признакам педагогической (методической) технологии   Классификационные параметры технологии По уровню применения: ...

Скачать
38455
2
1

... программирования Турбо Паскаль. Диалог между компьютером и играющим осуществляется как в меню, так и во время самой игры.   2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ «SIEGE» 1.   Название задачи Компьютерная игра. Название программы – «Siege». Система программирования Turbo Pascal. 2.   Описание Игра начинается с заставки, где написано название игры. Затем следует главное меню, где ...

Скачать
102471
0
17

... следует курсор установит на отметку “Exit” и нажат клавишу <Enter>. 14. Для повторения работы необходимо выполнить последовательно пункты с 4-го по 13-й. §2.3 Текст анимационно-обучающей программы механической системы Program Water_Program; Uses Crt, Graph; Const { Vvod Unit Graphics } FunWeb='c:tpBgi'; Var Gd,Gm,I,X,Y,X1,Y1,XX,YY,Rad,J:Integer; Z,J1,J2,W,V,G:Integer; ...

0 комментариев


Наверх