Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_pod_PSP_na_C__RUS.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.73 Mб
Скачать

Урок 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.