Занятие 5
Это надо знать
На прошлом занятии мы использовали функции с параметрами, что позволило нам нарисовать несколько героев в различных местах. Но герои одинакового размера, цвета, т.е. они совершенно одинаковы. Сегодня мы рассмотрим как можно рисовать героев различными цветами, разных размеров, научимся опускать и поднимать руки, открывать и закрывать глаза и т.п.Цвет
Для того, чтобы герои были нарисованы различными цветами, мы должны использовать параметр функции цвет.
Рассмотрим на примере самоката.
Опишем функцию:
void scooter (int x, int y, COLORREF colorWheal, COLORREF colorFrame)
где COLORREF - тип, который описывает цвет;
colorWheal - имя переменной, которая задает цвет колеса;
colorFrame - имя переменной, которая задает цвет рамы самоката.
Команды функции, которые связаны с цветом:
txSetColor (colorFrame, 2);
txSetFillColor (colorWheal );
Вызовем функцию:
scooter (120, 300, TX_BLUE, TX_RED); // самокат с красной рамой и синими колесами
scooter (300, 400, RGB (240, 150, 35), TX_LIGHTBLUE); // самокат с оранжевыми колесами и светло-синей рамой.
Размер по ширине и по высоте
Для того, чтобы изменить размер по высоте и ширине, необходимо числа, которые мы добавили к координатам опорной точки умножить на какое-то число. Если число будет больше нуля, но меньше единицы, то размер героя уменьшится, если больше 1 - увеличится.
Опишем функцию:
void scooter (int x, int y, COLORREF colorWheal, COLORREF colorFrame, double sizeX, double sizeY)
где double - тип, который указывает, что переменные могут быть целыми или дробными;
sizeX - имя переменной, которая задает коэффициент, который изменяет размер героя по ширине;
sizeY - имя переменной, которая задает коэффициент, который изменяет размер героя по высоте.
Команды функции, которые связаны с размером:
txCircle (x - 5 * sizeX, y + 45 * sizeY, 25 * sizeX);
txCircle (x + 145 * sizeX, y + 45 * sizeY, 25 * sizeX);
txLine (x - 5 * sizeX, y + 45 * sizeY, x + 20 * sizeX, y - 80 * sizeY);
txLine (x - 5 * sizeX, y - 70 * sizeY, x + 40 * sizeX, y - 90 * sizeY);
txLine (x + 0 * sizeX, y + 0 * sizeY, x + 45 * sizeX, y + 45 * sizeY);
txLine (x + 45 * sizeX, y + 45 * sizeY, x + 145 * sizeX, y + 45 * sizeY);
Вызовем функцию:
scooter ( 30, 460, TX_BLUE, TX_RED, 1, 1); // sizeX = 1 и sizeY = 1, следовательно, размер самоката не изменится
scooter (420, 460, RGB (240, 150, 35), TX_LIGHTBLUE, 1.5, 2); // sizeX = 1.5 и sizeY = 2, следовательно, размер самоката по ширине увеличится в полтора раза, по высоте - в два раза.
Управление руками
Рассмотрим функцию, которая рисует лягушку. Рассмотрим параметры, которые изменяются, если мы поднимаем или опускаем руку:
В данном случае при подъеме руки координата у уменьшится на 100. Введем для левой руки параметр leftHand, тогда координаты руки будут (x + 100, y + 50 - leftHand). Аналогично для правой руки введем параметр rightHand.
Опишем функцию:
void frog (int x, int y, int leftHand, int rightHand)
Команды функции, которые связаны с рисованием рук лягушки:
txLine (x - 100, y + 50 - rightHand, x - 45, y + 0);
txLine (x + 100, y + 50 - leftHand, x + 45, y + 0);
Вызовем функцию:
frog (105, 405, 0, 0); // параметры leftHand = 0 и rightHand = 0, следовательно, руки не поднимались и не опускались
frog (500, 455, 100, -50); // параметр leftHand = 100 - левая рука поднимется на 100 точек. Параметр rightHand = -50 - правая рука опустится на 50 точек.
Пример
Введем параметры для функций:Scooter:
sizeX - задает коэффициент, который изменяет размер самоката по ширине;
sizeY - задает коэффициент, который изменяет размер самоката по высоте;
colorWheal - задает цвет колеса;
colorFrame - задает цвет рамы самоката.
Frog:
sizeX - задает коэффициент, который изменяет размер героя по ширине;
sizeY - задает коэффициент, который изменяет размер героя по высоте;
color - задает цвет лягушки;
leftHand - задает число, на которое поднимается или опускается левая рука;
rightHand - задает число, на которое поднимается или опускается правая рука.
Tree:
sizeX - задает коэффициент, который изменяет размер елки по ширине;
sizeY - задает коэффициент, который изменяет размер елки по высоте;
color - задает цвет елки;
leftEye - задает перемещение левого зрачка;
rightEye - задает перемещение правого зрачка.
Посмотреть текст программы
Результат выполнения программы