Часть 2.
Структура листинга.
Контейнеры.
Программа ”Hello, World!”.
Тем, кто не любит теорию: Начинайте читать сразу с раздела ”Hello, World!”.
Структура листинга.
Что же такое “листинг”?
Листинг – это исходный код программы. Т.е. всё, что вы наберёте в script.lua, будет считаться листингом.
Структура листинга – это порядок действий в листинге.
Листинг PGE-LUA имеет примерно такую структуру:
• Инициализация переменных (в большинстве случаев используются контейнеры, но об этом - позже);
• Инициализация функций;
• Старт программы;
o Действия;
• Завершение программы.
Тут следует внести некоторые объяснения.
Инициализация – процесс описания, объяснения компонентов, которые будут использоваться в программе. Проще говоря, мы просто говорим программе, что это за файл. Шаблон инициализации:
[имя объекта] = [описание объекта]
Также переменные можно инициализировать не только в начале листинга, но и где угодно.
Контейнеры.
В большинстве языков программирования требуют указания типа инициализируемых файлов. Выглядит это обычно так:
[тип] [имя объекта] = [значение ]
Причём, значение напрямую зависит от типа переменной. Например, если вы поставите тип - целое число (int), а значение – букву(char), то объекту будет присвоено число, соответствующее этой букве (для этого есть специальная таблица).
Во многих случаях такой подход неудобен, да и запутаться в нём просто. И тут на помощь приходит LUA. В Lua вы можете не указывать тип объекта (хотя такая функция всё же имеется) – Lua сам распознает тип, когда это будет нужно.
Вот мы и приблизились к понятию контейнеры. Контейнеры- пространство, где хранится значение переменных, независимо от типа. В одном контейнере могут храниться также и значения разных типов, как в случае с массивами (или списками). Если вы ничего не поняли – не расстраивайтесь – поймёте чуть позже.
“Hello, World!”
Итак, напишем, наконец, нашу первую программу. Она будет выводить на экран psp фразу ”Hello, World!”
Откройте созданный нами в прошлом уроке файл ”script.lua”. В нём пока пусто, но мы это исправим. Для начала, добавьте в папку с script.lua шрифт-файл(он имеет формат “.ttf”, а найти стандартные шрифту можно через “Пуск – Панель управления - Шрифты”).
Теперь нам надо указать программе, что этот шрифт существует и показать, где он находится, т.е. инициализировать. Шаблон инициализации шрифта:
[имя шрифта] = pge.font.load(“название шрифта”, размер шрифта, участок памяти, в который будет записан шрифт(лучше используйте PGE_RAM, т.к. он обеспечивает бОльшую память).
И пример:
verdana12 = pge.font.load(“verdana.ttf”, 12, PGE_RAM)
Далее обозначим контейнер, в котором будет храниться цвет шрифта. Инициализацией цвета происходит через функцию pge.gfx.createcolor(степень красного, степень зелёного, степень синего). Степень цвета(т.е. интенсивность его использования) может доходить до 255. Причём, если поставить все 3 показателя на 0, то они использоваться не будут, и, соответственно, создастся чёрный цвет(как стандартный). Если поставить все по 255, то получим белый цвет. Шаблон инициализации цвета:
[название цвета] = pge.gfx.createcolor(степень красного, степень зелёного, степень синего)
И пример(создаём красный цвет):
red = pge.gfx.createcolor(255, 0, 0)
Создайте белый цвет. Он будет цветом нашего шрифта. Назовите его “white”.
Далее создадим переменные с координатами положения нашего текста. Их делаем как обычные lua-переменные. Пример:
x = 200
y = 130
В них хранятся соответственно x и y координаты.
Всё, с объявлением переменных мы закончили. Теперь приступим непосредственно к ”начинке” нашей программы.
Для того, чтобы программа не выключалась сразу после запуска, нам надо внести это выражение:
while pge.running() do
Напишите эту строчку в вашем коде. Следующими обязательными строчками являются:
pge.controls.update() – выражение, работающее со средствами ввода(с кнопками).
pge.gfx.startdrawing() – выражение, выводящее информацию (картинки, фразы, да что угодно) в буфер.
pge.gfx.clearscreen() – выражение, удаляющее всё с экрана. В скобках можно указать цвет фона.
pge.gfx.enddrawing() – выражение, заканчивающее вывод информации в буфер.
pge.gfx.swapbuffers()–выражение, выводящее объекты из буфера на экран.
Буфер – часть памяти, где хранятся файлы до вывода на экран.
Запишите эти три выражения в программу (используйте табуляцию для придания большей читабельности программ.).
В нашей программе мы не будем использовать средства ввода, так что ничего писать под соответствующим выражением не надо. Мы уже инициализировали нужный нам шрифт, осталось его только активировать.
Активация всех шрифтов, картинок и текстур обязательна! Иначе, они не будут работать. Активация проходит по следующему шаблону:
[имя шрифта]:activate()
Пример:
verdana12:activate()
Теперь создадим строки, которые будут непосредственно выводить текст в буфер. Вывод текста идёт через обращение к самому шрифту, и шаблон его выглядит так:
[имя шрифта]:print(координата x, координата y, цвет, “Текст”)
Вот пример с использованием ранее нами инициализированных объектов:
verdana12:print(x, y, white, “Hello, World!”).
Далее заканчиваем нашу программу функциями:
pge.gfx.enddrawing()
pge.gfx.swapbuffers()
end
Поздравляю! Вы только что создали первую программу. Сохраняйте результат и смело пробуйте запустить программу на psp.
Далее приводится полный листинг программы(для тех, у кого что-то не заработало):
white = pge.gfx.createcolor(255,255,255)
verdana12 = pge.font.load("verdana.ttf",12, PGE_RAM)
x = 200
y = 130
while pge.running() do
pge.gfx.startdrawing()
pge.gfx.clearscreen()
verdana12:activate()
verdana12:print(x,y,white,"Hello, World!")
pge.gfx.enddrawing()
pge.gfx.swapbuffers()
end