Суббота, 19.09.2020, 12:48 | Приветствую Вас Гость
ИГРОВОЕ МЕНЮ
 
По многочисленным просьбам выкладываю письменный урок по созданию интерфейсного меню на LUA. P.S. Пишу в 0:30 ночи, так что ошибки в словах не исключены..
 
В создании игрового меню по сути дела нет ничего сложного, ибо я даже создал программу работающую непосредственно на PSP для создания собственной менюшки в вашей игре, в помощь программистам-новичкам. www.youtube.com/watch?v=5Wzvy6zf_bg Ссылку на программу не помню, но google вас спасёт - кто захочет тот найдёт, поищите на сайте pspinfo.ru pspinfo.ru/forum/club/boltalka/2012-03-02/gamemaker/
 
А теперь непосредственно к меню (План действий)
1)Определиться с количеством управляющих кнопок в нашем меню
2)Определиться с их названием и их назначением при работе в меню
3)Придумать их оформление и расположение на рабочей области экрана
4)Выделение текущего элемента меню(подсветка/изменение размера)
5)Управление кнопками (мышь-джойстик/клавиатура-кнопки)
 
Допустим мы решили, что количество кнопок у нас будет равно трём - (играть, настройки, выход) и располагаться они у нас будут друг под другом. Управление у нас будет осуществляться кнопками, а выделенный элемент будет как-то подсвечиваться)
 
Приступим
 
КОД:
 
Расположим на экране три кнопки меню, вниз друг за другом.
 
kn1=Image.load("kn1.png")--кнопка меню
kn2=Image.load("kn2.png")--кнопка меню
kn3=Image.load("kn3.png")--кнопка меню
pod=Image.load("pod.png")--полупрозрачная картинка подсветки
P.S. но если у вас нету PS или Paint.net - есть ещё один способ создать полупрозрачную картинку
--[[
pod=Image.createEmpty(30,20)
pod:clear(Color.new(r,g,b,alpha))
]]
Где r,g,b это переменные, которые могут принимать ваши значения от 0 до 255, а alpha - это коэффициент alpha прозрачности, в интервале 0-255
 
op=1--переменная которая будет давать понять PSP о том, какая кнопка меню у нас сейчас активна.
x=100--координата расположения кнопок по x
y=100--координата расположения кнопок по у
 
while true do
screen:clear()
pad=Controls.read()
screen:blit(x,y,kn1)
screen:blit(x,y+30,kn2)
screen:blit(x,y+60,kn3)
 
--тут я ограничиваю переменную op колличеством наших кнопок, которых не больше 3х
if op<1 then op=3 end
if op>3 then op=1 end
 
--тут я осуществляю выбор активной кнопки меню с помощью кнопок PSP
if pad:up() and old:up()~=pad:up() then op=op-1 end
if pad:down() and old:down()~=pad:down() then op=op+1 end
 
--тут я заставляю psp подсвечивать выбранную мною кнопку меню путём наслоения на эту кнопку ещё одного изображения pod/--при условии конечно, что наша наслаиваемая картинка полу-прозрачна(легче всего этого добиться в Paint.net) и имеет размер - равный размеру кнопки меню.
if op==1 then screen:blit(x,y,pod)
elseif op==2 then screen:blit(x,y+30,pod)
elseif op==3 then screen:blit(x,y+60,pod)
end
 
old=pad--заметьте не oldpad а просто old, на самом деле я тут могу написать хоть psp, ошибки не будет
screen:flip()
end
 
P.S. Что может быть проще..
Навигация
Форма входа

Календарь
«  Сентябрь 2020  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
282930