Занятие 9
Это надо знать
Добавим в наш мультфильм титры в начале и в конце мультфильма.Для рисования текста будем использовать команду из библиотеки TXLib:
txTextOut (x, y, text);
Параметры:
x - Х-координата начальной точки текста
x - Х-координата начальной точки текста
y - Y-координата начальной точки текста
text - текст, записанный в кавычках
Пример:
txTextOut (50, 200, "Похождения лягушки");
Для изменения цвета текста используется команда из библиотеки TXLib:
txSetColor (цвет);
Пример:
txSetColor (TX_RED);
Для изменения размера шрифта, начертания, наклона используется команда из библиотеки TXLib:
txSelectFont (name, sizeY, sizeX, bold, italic,underline, strikeout, angle);
Параметры:
name - Название шрифта ("Arial", "Comic Sans MS", ...)
name - Название шрифта ("Arial", "Comic Sans MS", ...)
sizeY - Высота букв
sizeX - Ширина букв
bold - Жирность шрифта (false или true)
italic - Курсив (false или true)
underlin - Подчеркивание (false или true)
strikeout - Зачеркивание (false или true)
angle - Угол поворота текста (в градусах)
Примеры:
txSelectFont ("Comic Sans MS", 40); // выбран шрифт "Comic Sans MS" и высота букв равна 40.
txSelectFont ("Arial", 100, 10, false, true, false, true, 15); // выбран шрифт "Arial", высота букв равна 100, ширина - 10, шрифт нежирный, с наклоном, не подчеркнут, зачеркнут и написан под углом 15 градусов.
Титры
Напишем функцию, которая будет рисовать титры в начале мультфильма.
Назовем функцию OpenTitles.
void OpenTitles()
{
txSetFillColor (RGB (190, 250, 115));
txClear();
txSetColor (RGB (150, 35, 135));
txSelectFont ("Arial", 100, 25, 5);
txTextOut (100, 150, "Приключения лягушки");
txSetColor (RGB (70, 50, 210));
txSelectFont ("Calibri", 60, 15, true, false, false, false, 30);
txTextOut (150, 350, "Автор: Комар");
txSetColor (RGB (225, 60, 115));
txSelectFont ("Comic Sans MS", 50, 16, false, true, false, false, -10);
txTextOut (350, 350, "Продюсеры: Елки");
txSleep (3000);
}
Движение титров
void OpenTitles()
{
int t = 0;
int y = 700;
while (t < 110)
{
txSetFillColor (RGB (190, 250, 115));
txClear();
txSetColor (RGB (150, 35, 135));
txSelectFont ("Arial", 100, 25, 5);
txTextOut (100, y, "Приключения лягушки");
txSetColor (RGB (70, 50, 210));
txSelectFont ("Calibri", 60, 15, true, false, false, false, 30);
txTextOut (150, y + 200, "Автор: Комар");
txSetColor (RGB (225, 60, 115));
txSelectFont ("Comic Sans MS", 50, 16, false, true, false, false, -10);
txTextOut (350, y + 200, "Продюссеры: Елки");
y -= 10;
t++;
txSleep (50);
}
}
Диалог героев
Для вывода текста около героя воспользуемся функцией из библиотеки TXLib:
Диалог героев
txDrawText (x0, y0, x1, y1, text, format); //Рисует текст, размещенный в прямоугольной области.
x0 - X-координата верхнего левого угла области
y0 - Y-координата верхнего левого угла области
x1 - X-координата нижнего правого угла области
y1 - Y-координата нижнего правого угла области
text - Текстовая строка
format - DT_CENTER - выравнивание по центру по горизонтали;
DT_VCENTER - выравнивание по центру по вертикали;
Напишем функцию Dialog, которая будет выводить текст около героя.
void Dialog (int x, int y, char text[], COLORREF color)
{
txSetColor (color);
txSelectFont ("Calibri", 20);
txDrawText (x, y, x + 100, y + 50, text, DT_CENTER);
}
Параметры:
х - Х-координата начальной точки текста
у - Y-координата начальной точки текста
text[] - текст, записанный в кавычках
color - цвет текста
Примеры:
Dialog (-35 + 2*t, 320 + 1*t, "Беги, лягушка,\n беги!", TX_RED);
Dialog (5 + 3*t, 315 + 2*t + 20*sin(t), "Прыг! Скок!", RGB ( 30, 190, 50));
Символы \n обозначают переход на новую строку, т.е. текст, который стоит после этих символов будет записан с новой строки.
Создание фона мультфильма
Создадим новую функцию, которая будет отвечать за рисование фона.
Назовем функцию Background.
Параметры:
colorSky - цвет неба
colorGround - цвет земли
amtTree - количество елок
t - время
void Background (COLORREF colorSky, COLORREF colorGround, int amtTree, int t)
{
txSetFillColor (colorSky);
txClear();
txSetFillColor (colorGround);
txRectangle (0, 300, 800, 600);
forest (50, 50, amtTree, t);
}
Внесем изменения в рисование елок:
void forest (int x, int y, int amtTree, int t)
{
int step = 800/amtTree;
while (x <= 800)
{
tree (x, y, 1, 1, t%7, t%7, RGB (145, 210, 80));
x += step;
}
}
Вызывать функцию Background будем внутри цикла, например:
void MoveMosquito()
{
int t = 0;
while (t <= 160)
{
Background (RGB (190, 240, 240), RGB (200, 250, 200), 6, t);
mosquito (100 + 5*t, 240, 1, 1, t%2, t%15 - 5, 1, RGB (190, 190, 190));
t++;
txSleep (80);
}
}
Пример
Мультфильм с титрами в начале и в конце, с диалогами героев.Посмотреть текст программы
Результат работы программы