
- •Методичні вказівки для допомоги студентам у вивченні самостійних тем з предмету
- •Урок № 6
- •Особливості інтегрованого середовища програмування Turbo Pascal. Основні пункти меню
- •Урок № 13
- •Поняття рекурсії. Зовнішні оголошення та оголошення процедур та функцій з випередженням
- •Урок № 14
- •Особливості роботи в текстовому режимі
- •Урок № 20
- •Сортування масиву. Методи сортування масиву
- •Урок № 21
- •Рекурсивне сортування масиву методом вибору
- •Урок № 21
- •Алгоритми роботи з двомірними таблицями на мові програмування Pascal
- •Урок № 25
- •Приклади опису багатомірних масивів засобами мови програмування Pascal
- •Урок № 26
- •Робота з елементами двомірного масиву
- •Урок № 27
- •Записи. Види записів. Робота з записами
- •Урок № 30
- •Множини. Дії над множинами
- •Урок № 32
- •Запис/читання файлу. Маніпуляції вмістом файлу
- •Урок № 33
- •Типізовані файли. Текстові файли. Нетипізовані файли
- •Урок № 37
- •Динамічні данні без внутрішніх посилань
- •Урок № 42
- •Робота з кольорами
- •Урок № 43
- •Робота з координатами
- •Урок № 44
- •Принцип виведення точки та лінії на екран
- •Урок № 45
- •Принцип побудови не заповнених геометричних фігур
- •Урок № 46
- •Принцип побудови заповнених геометричних фігур
- •Урок № 47
- •Виведення тексту в графічному режимі
- •Урок № 50
- •Використання модуля mouse Питання для вивчення:
- •Урок № 51
- •Принципи побудови графічного зображення, що рухається
- •Урок № 52
- •Модуль Graphs3d
Урок № 47
(згідно робочої навчальної програми)
Виведення тексту в графічному режимі
Питання для вивчення:
Виведення тексту на екран в графічному режимі.
Для виводу на екран будь-якого тексту використовується або процедура Write, або Writeln. Ці процедури застосовуються виключно в текстовому режимі. Для того щоб вивести на екран текст в графічному режимі використовується процедура OutText.
Виведення тексту на екран в графічному режимі. Процедура OutText.
Program Graphika17;
Uses Graph;
Procedure Graphinterface;
Var gd, gm, error: Integer;
s: String;
Begin
gd: = detect;
s: = '';
Initgraph (gd, gm, s);
error: = GraphResult;
if error <> GrOk then
begin
writeln (GraphErrorMsg (Error));
Halt (error)
end
end;
begin
Graphinterface;
setcolor (3);
outtext ('pascal');
readln;
end.
У рядку № 19 встановлюємо колір для виведеного на екран тексту. Тобто процедура SetColor визначає не тільки колір ліній, але колір тексту, виведеного за допомогою процедури OutText. У рядку № 20 записуємо процедуру OutText. Ця процедура виводить на екран текст в графічному режимі. Сам текст записується в круглих дужках і в лапках після слова OutText. У нашому прикладі ми виводимо на екран слово «pascal».
Процедура OutText виводить текст в місці розташування поточного покажчика (за замовчуванням покажчик знаходиться в точці з координатами 0,0).
Питання для контролю вивченого матеріалу:
Опрацюйте матеріал.
Розробіть програму з використанням тексту в графічному режимі.
Література:
Меженний О.А.Turbo Pascal: М: Издательский дом «Вильямс», 2006. – 336 с., стор. 236-242
Урок № 50
(згідно робочої навчальної програми)
Використання модуля mouse Питання для вивчення:
Функції роботи з модулем мишки.
Функції роботи з модулем мишки. У цьому модулі зібрані процедури і функції, які забезпечують роботу пристрою введення типу миша:
{Наступний тип використовується для визначення елементів, обираних мишею (см.SetMouseOption)}
type
MouseItemType = record
X1, Y1, X2, Y2: Integer; {Координати області}
Butt: Word; {Умови дзвінок}
Key: Word {Скан-код клавіші}
end;
{Тип MouseHandlerType визначає процедуру обробки подій від миші}
type
MouseHandlerType = Procedure (Mask, Buttons, X, Y, DX, DY: Integer);
{Константи вибору кнопок миші}
const
LeftButton = 1; {Ліва кнопка}
RightButton = 2; {Права кнопка}
CenterButton = 4; {Середня кнопка}
AnyButton = 7; {Будь кнопка}
{Коефіцієнти перерахунку віртуальних координат в текстові}
const
TextRatioX: Byte = 8;
TextRatioY: Byte = 8;
3.Ініціація миші
Function IsMouse: Boolean;
{Повертає TRUE, якщо миша доступна}
Function InitMouse: Boolean;
{Ініціація миші}
Procedure SetMousePage (Page: Byte);
{Встановлює сторінку для покажчика миші}
Function GetMousePage: Byte;
{Повертає номер сторінки з покажчиком}
Procedure SetStepToPixel (Hor, Ver: Integer);
{Встановлює чутливість миші}
Procedure GetStepToPixel (var Hor, Ver: Integer);
{Повертає чутливість миші}
Procedure SetDoubleSpeed (Speed: Word);
{Встановлює поріг подвоєння швидкості переміщення покажчика}
Function GetDoubleSpeed: Word;
{Повертає поріг подвоєння швидкості}
Координати
Function MouseTextCooX (X: Integer): Byte;
{Повертає текстову координату по заданій віртуальної}
Function MouseTextCooY (Y: Integer): Byte;
{Повертає текстову координату по заданій віртуальної}
Function MouseGraphCooX (X: Byte): Integer;
{Повертає віртуальну координату по заданій текстовій}
Function MouseGraphCooY (Y: Byte): Integer;
{Повертає віртуальну координату по заданій текстовій}
Procedure MouseWhereXY (var X, Y: Integer);
{Повертає віртуальні координати миші}
Procedure MouseGotoXY (X, Y: Integer);
{Перекладає курсор миші в нове положення X, Y - віртуальні координати}
Function MouseWhereX: Byte;
{Повертає горизонтальну текстову координату}
Function MouseWhereY: Byte;
{Повертає вертикальну текстову координату}
Function MouseIn (X1, Y1, X2, Y2: Integer): Boolean;
{Повертає TRUE, якщо покажчик знаходиться в заданому прямокутнику}
Стан кнопок
Function NumButton: Byte;
{Повертає кількість кнопок миші}
Procedure GetMouseState (var Butt, X, Y: Integer);
{Повертає поточний стан миші: BUTT - прапор стану кнопок; X, Y - поточні віртуальні координати}
Function MousePressed: Boolean;
{Повертає TRUE, якщо натиснута кнопка}
Procedure MouseButtPressed (Butt: Integer;
var Stat, Count, X, Y: Integer);
{Повертає інформацію про натиснутій клавіші:
BUTT - прапор вибору клавіші;
STAT - стан клавіш;
COUNT - кількість натискань, X, Y — координати}
Procedure MouseButtReleased (Butt: Integer; var Stat, Count, X, Y: Integer);
{Повертає інформацію про відпущеної клавіші: BUTT - прапор вибору клавіші; STAT - стан клавіш; COUNT - кількість відпускання; X, Y — координати}
6.Вікна
Procedure MouseWindow (X1, Y1, X2, Y2: Integer);
{Задає координати області переміщення покажчика. X1 ... Y2 - віртуальні координати}
Procedure MouseScreen;
{Встановлює вікно на весь екран}
Форма покажчика
Procedure ShowMouse;
{Показати покажчик миші}
Procedure HideMouse;
{Прибрати покажчик миші}
Procedure MouseTextCursor (ScrMask, CurMask: Word);
{Встановлює новий вид текстового покажчика}
Procedure MouseBlink (YUp, YDn: Byte);
{Задає апаратний курсор потрібного розміру}
Procedure MouseGraphCursor (var ScrCurMask; X, Y: Byte);
{Задає вид графічного покажчика}
7.Збереження / відновлення стану
Function MouseBuffSize: Word;
{Повертає довжину буфера для збереження параметрів}
Procedure SaveMouse (var Buff);
{Зберігає в буфері поточний стан миші}
Procedure RestoreMouse (var Buff);
{Відновлює збережений стан миші}
Емуляція клавіатури
Procedure SetMouseItem (NItem: Byte; var Items);
{Встановлює елементи для вибору мишею:
NItem - кількість елементів;
Items - array [1 .. NItem] of MouseItemType;
Старі установки скидаються}
Procedure AddMouseItem (Item: MouseItemType);
{Додає ще один елемент для вибору мишею.
Старі установки зберігаються}
Procedure ClearMouseItems;
{Скидає раніше встановлені елементи}
Procedure GetMouseItem (var NItem: Byte; var Items);
{Повертає встановлені елементи}
Function KeyOrMousePressed: Boolean;
{Повертає TRUE, якщо натиснута клавіша чи активна миша}
Function ReadKeyOrMouse: Char;
{Повертає символ натиснутою клавіші або вибраної опції}
Обробка подій від миші
Procedure SetMouseHandler (Mask: Word; Proc: MouseHandlerType);
{Встановлює адресу та умови виклику обробника}
Procedure ChangeMouseHandler (Mask: Word; Proc: MouseHandlerType;
var OldMask: Word; var OldProc: Pointer);
{Замінює старий обробник новим}
Procedure ClearMouseHandler;
{Видаляє обробник подій}
Ініціація миші
Uses DOS, CRT;
type
MouseItems = array [1 .. 2 * MaxInt div
SizeOf (MouseItemType)] of MouseItemType;
PMouseIt = ^ MouseItems;
const
MousePresent: Boolean = False; {Ознака наявності миші}
ItemsList: PMouseIt = NIL; {Масив елементів вибору}
NMouseItem: Byte = 0; {Кількість елементів вибору}
MouseVisible: Boolean = False; {Ознака видимого покажчика}
x1m: Integer = 0; {Координати області}
y1m: Integer = 0; {переміщення покажчика}
x2m: Integer = 639;
y2m: Integer = 199;
Speed2: Word = 128; {Поріг подвоєння швидкості}
VerRat: Integer = 8; {Чутливість миші}
HorRat: Integer = 8;
NButton: Byte = 0; {Кількість кнопок миші}
var
Reg: registers;
Function IsMouse: Boolean;
{Повертає TRUE, якщо миша доступна}
var
p: Pointer;
k, x, y: Integer;
Is: Boolean;
begin
if NButton = 0 then
begin
GetIntVec ($ 33, p);
Is: = p <> NIL;
if Is then with Reg do
begin
ax: = $ 3;
bx: = $ FFFF;
Intr ($ 33, Reg);
Is: = bx <> $ FFFF
end;
MousePresent: = Is
end;
IsMouse: = MousePresent
end;
Питання для контролю вивченого матеріалу:
Опрацюйте матеріал, розберіться у властивостях мишки.
Література:
Turbo Pascal/ стор.А.Немрюгин. – СПб: Издательство «Питер», 2000. – 496 с.: ил., стор. 250-253