Урок 5: Новые методы программирования на PSP, глава 4

Перед вами четвертая часть урока 5. Если вы не прочитали первую, вторую и третью части, то ознакомьтесь с ними сейчас.

Итак, у нас есть код, который позволяет нам выбрать компонент цвета и изменять переменную, отвечающую за это цвет. Следующим шагом нам нужно фактически вывести программу на экран. Наш пользовательский интерфейс (ИП) будет состоять из текста, рассказывающего пользователю о том, что является компонентом цвета и фоном.

Помните, что цвета могут быть в пределах 0-255. Нам следует удостовериться в том, что не происходит выхода за рамки указанного диапазона, когда пользователь просматривает их путем прокрутки. Поэтому будем использовать серию операторов if / else для предотвращения выхода за возможные границы.

if(bgR < 0) {
bgR = 0;
} else if(bgR > 255) {
bgR = 255;
}
if(bgG < 0) {
bgG = 0;
} else if(bgG > 255) {
bgG = 255;
}
if(bgB < 0) {
bgB = 0;
} else if(bgB > 255) {
bgB = 255;
}

Это довольно просто объяснить. Если значение какого-либо компонента выходит из диапазона, мы должны установить возможную верхнюю и нижнюю границы.

Теперь заполним фоновый слой таким цветом, который задают наши переменные:

fillScreenRect(RGB(bgR, bgG, bgB), 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);

«fillScreenRect()» представляет собой функцию, которая определена в «graphics.c «. Она заполняет прямоугольную часть экрана необходимым цветом. Требуется пять параметров. Первым является цвет, который мы хотим закрасить прямоугольник. Вторым – x позиция прямоугольника. Третьим – y позиция прямоугольника. Четвертым – ширина прямоугольника. Пятым – высота прямоугольника.

Далее запишем все, что касается фона:

sprintf(filler, " RED: %i", bgR);
if(selComponent == 0) {
printTextScreen(11, 10, filler, shadowColorH);
printTextScreen(10, 10, filler, highlightColor);
} else {
printTextScreen(11, 10, filler, shadowColorD);
printTextScreen(10, 10, filler, dimmedColor);
}

Вы должны помнить функцию «sprintf()» из урока 4. Она выводит форматированные данные в строку. На этот раз, используем переменную. Мы хотим вывести на экран и цвет (красный), и значение (bgR). Мы осуществляем данную операцию таким же способом, что и в уроке 3 при выводе целого числа (с модификатором «%i «). После выбора компонента мы применяем функцию «printTextScreen ()» из «graphics.c» для того, чтобы вывести нашу строку на экран. Функция требует четыре параметра. Первым является x позиция, вторым – y позиция, третьим – строка, четвертым – цвет. Использование операторов if / else объясняется тем, что мы хотим вывести на экран текст в различном цвете. Ранее мы использовали и тень.

Сейчас осуществим те же самые действия для других цветов:

sprintf(filler, "GREEN: %i", bgG);
if(selComponent == 1) {
printTextScreen(11, 20, filler, shadowColorH);
printTextScreen(10, 20, filler, highlightColor);
} else {
printTextScreen(11, 20, filler, shadowColorD);
printTextScreen(10, 20, filler, dimmedColor);
}

sprintf(filler, " BLUE: %i", bgB);
if(selComponent == 2) {
printTextScreen(11, 30, filler, shadowColorH);
printTextScreen(10, 30, filler, highlightColor);
} else {
printTextScreen(11, 30, filler, shadowColorD);
printTextScreen(10, 30, filler, dimmedColor);
}

Мы на заключительном этапе, честное слово:) В пятой части мы окончательно завершим нашу программу и создадим Makefile.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: