Суббота, 23 Ноября 2024, 13:04

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [358]
Статьи об общих понятиях связанных с созданием игр.
Программирование [83]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [147]
Статьи о программах для создания игр, уроки и описания.
Софт [43]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [17]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [167]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [132]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Игры какого типа вы предпочитаете делать?
Всего ответов: 16684
Главная » Статьи » Создание игр

Создание игр для PSP с использованием языка LUA - Часть 2
Доброго времени!
Надеюсь вам понравился мой прошлый урок. Но то, что я дал в той статье совершенно не пригодно для создания игр. В этом уроке мы уже создадим простенькую игру (совсем простую).
Вот план работы:
1. Вывод изображений.
2. Обработка нажатий на кнопки.
3. Обобщающая программа.
Часть 1
Вывод изображений - очень важная часть создания игры. Если есть идея, умеешь выводить изображения и реагировать на нажатия клавиш - значит ты уже можешь создать хорошую игру. И сейчас я покажу, как выводить изображения в LUA.
Создайте новый проект, как это делать написано тут.
Сначала скачайте изображение отсюда.
Потом добавим изображение в проект. Для этого нажмите на кнопку Import a file into a project. На неё на изображении показывает стрелочка:

Code

sqr = Image.load("sqr.png") --Загружаем изображение в переменную sqr
screen:blit(0,0,sqr) --Выводим изображение на экран. 1 параметр - координата по x, 2 параметр - по y, 3 параметр - переменная --изображения
screen.flip()
while true do
screen.waitVblankStart()
end

В комментариях в программе я подробно описал все новые строчки. Надеюсь вы поняли, что "--" обозначает комментарий.
И ещё одна важная особенность - в LUA переменные можно объявлять где угодно, у них нет типа.
Теперь загружайте программу на PSP, как описано в прошлом уроке и запускайте. У вас должен был появится красный квадрат в верхнем левом углу. Если это не так, то проверьте код и есть ли изображение в папке с EBOOT.PBP.
Часть 2
Теперь у нас по плану обработка нажатий на кнопки.
Как обычно даю сразу весь код:
Code

sqr = Image.load("sqr.png") --Загружаем изображение в переменную sqr
x=0
y=0
while true do
screen:clear()
screen:blit(x,y,sqr) --Выводим изображение по координатам
screen.flip() --Выводим содержимое буфера на экран
pad = Controls.read() --Читаем нажатую кнопку
if pad:up() then --Если нажата кнопка "Вверх"
if y>0 then --Проверям, не выходит ли изображение за экран
y=y-10 --Уменьшаем y  
end
end
if pad:down() then --Если нажата кнопка "Вниз"
if y<222 then --Проверям, не выходит ли изображение за экран
y=y+10 --Увеличиваем y
end
end
if pad:left() then --Если нажата кнопка "Влево"
if x>0 then --Проверям, не выходит ли изображение за экран
x=x-10 --Уменьшаем x
end
end
if pad:right() then --Если нажата кнопка "Вправо"
if x<430 then --Проверям, не выходит ли изображение за экран
x=x+10 --Увеличиваем x
end
end
end
.
Думаю вопрос может быть только в 4 строчках, но ответ на них один: разрешение экрана PSP 480X272 пиксела. И, надеюсь, вы заметили, что синтаксис условного выражения в LUA очень похож на синтаксис в Pascal'е.
Часть 3
Ну а теперь напишем небольшую программку, использующую весь пройденный нами материал.
Code

blue=Color.new(0,0,255)
sqr = Image.load("sqr.png") --Загружаем изображение в переменную sqr
x=0
y=0
while true do
screen:clear()
screen:blit(x,y,sqr) --Выводим изображение по координатам
pad = Controls.read() --Читаем нажатую кнопку
if pad:up() then --Если нажата кнопка "Вверх"
if y>0 then --Проверям, не выходит ли изображение за экран
y=y-10 --Уменьшаем y  
end
screen:print(0,0,"Up pressed!",blue)
end
if pad:down() then --Если нажата кнопка "Вниз"
if y<222 then --Проверям, не выходит ли изображение за экран
y=y+10 --Увеличиваем y
end
screen:print(0,0,"Down pressed!",blue)
end
if pad:left() then --Если нажата кнопка "Влево"
if x>0 then --Проверям, не выходит ли изображение за экран
x=x-10 --Уменьшаем x
end
screen:print(0,0,"Left pressed!",blue)
end
if pad:right() then --Если нажата кнопка "Вправо"
if x<430 then --Проверям, не выходит ли изображение за экран
x=x+10 --Увеличиваем x
end
screen:print(0,0,"Right pressed!",blue)
end
screen.flip() --Выводим содержимое буфера на экран
end

С этим кодом попробуйте разобраться самостоятельно.
Ну, надеюсь у вас не было вопросов по этому уроку. Если и таковые были, то пишите в комментариях или мне в ЛС.
Категория: Создание игр | Добавил: aeDeaf (10 Марта 2012)
Просмотров: 13274 | Комментарии: 4 | Рейтинг: 4.6/5 |
Теги: язык LUA, Программирование игр, Создание игр, PS Portable, Miro Lua, PlayStation Portable, программирование, LUA, Создание игр для PSP
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Создание игр для PSP с использованием языка LUA - Часть 2», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 4
+0-
3 zac   (18 Марта 2012 10:41) [Материал]
Молодец! yes

Так держать,делай дальше! xmas

+2-
1 qazer   (11 Марта 2012 07:02) [Материал]
qazerЭто уже было интересно. Надеюсь дальше будешь продолжать писать. Напишешь, как можно проверять столкновения между двумя спрайтами и вращать спрайт?

+3-
2 aeDeaf   (11 Марта 2012 13:44) [Материал]
aeDeafК сожалениию, вращение изображение невозможно. А про столкновения я конечно напишу!

+0-
4 OmniGamer   (12 Апреля 2015 14:20) [Материал]
Ну и где статья про столкновения? angry

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • 3D Rad Rus
  • Unigine
  • Vizard
  • Catcake
  • Haaf's Game Engine
  • Amp II Game Engine
  • SecondBASIC
  • Open 3D Engine
  • ZDaemon
  • Kodu
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг