|
|
|
#1 Добавлено: 6 июня 2011 19:01 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
Добрый вечер! Помогите пожалуйста: я хочу написать программу для PSP в lua, но у меня не получается сделать меню. Как сделать вертикальное меню, переключение стрелочками, обычные - белые, выделенный зелёный, выбор крестом, при выборе каждая запускает другой скрипт??? Вот код в PGE, такой внешний вид хотелось бы. Задача не простая.
MyFont = pge.font.load("1.ttf",16)
items = {"5.03GEN-C -> 6.20TN-E","5.03GEN-C -> 6.20PRO-B6","5.03GEN-C -> 6.35PRO-B6","6.20PRO-B6 -> 6.35PRO-B6","6.20TN-E -> 6.35PRO-B6","6.20PRO-B6 -> 6.20TN-E","6.20TN-E -> 6.20PRO-B6","6.35PRO-B6 -> 6.20TN-E","6.35PRO-B6 -> 6.20PRO-B6","6.20PRO-B6 -> 5.03GEN-C","6.20TN-E -> 5.03GEN-C"}
while pge.running() do pge.controls.update() pge.gfx.startdrawing() pge.gfx.clearscreen()
MyFont:activate() for num = 1, #items do if num==index then MyFont:print(25,10+num*20,green,items[num]) else MyFont:print(25,10+num*20,white,items[num]) end end
if pge.controls.pressed(PGE_CTRL_UP) and ( index > 1 ) then index = index-1 end
if pge.controls.pressed(PGE_CTRL_DOWN) and ( index < #items ) then index = index+1 end
pge.gfx.enddrawing() pge.gfx.swapbuffers() end
|
|
|
|
|
#16 Добавлено: 6 июня 2011 20:31 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, а что насчёт моего?
|
|
|
|
|
#17 Добавлено: 6 июня 2011 20:37 |
|
|
|
|
Посетители
vladgalay
--
Возраст: 28 | |
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 14 лет 8 месяцев
|
|
nikita1996spb, так тебе нужен тот же самый код, только в обычном Lua? Или я что-то не понял ?
|
|
|
|
|
#18 Добавлено: 6 июня 2011 20:42 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, да! Но напиши ещё, чтобы при выборе каждый из них запускал скрипт 1.lua. Дальше я сам подстрою
|
|
|
|
Спасибо за пост: 1 |
#19 Добавлено: 6 июня 2011 20:54 |
|
|
|
|
Посетители
vladgalay
--
Возраст: 28 | |
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 14 лет 8 месяцев
|
|
nikita1996spb, ладно, скоро напишу !
|
|
|
|
|
#20 Добавлено: 6 июня 2011 20:57 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, спасибо большое !!! а примерно через сколько, можешь сказать?
|
|
|
|
|
#21 Добавлено: 6 июня 2011 21:01 |
|
|
|
|
Посетители
vladgalay
--
Возраст: 28 | |
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 14 лет 8 месяцев
|
|
nikita1996spb, через полчаса .
|
|
|
|
|
#22 Добавлено: 6 июня 2011 21:04 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, хорошо
|
|
|
|
|
#23 Добавлено: 6 июня 2011 21:33 |
|
|
|
|
Посетители
vladgalay
--
Возраст: 28 | |
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 14 лет 8 месяцев
|
|
nikita1996spb, вот код : white = Color.new(255,255,255) green = Color.new(0,255,0) font = Font.load("1.ttf") font:setPixelSizes(16,16)
items = {"5.03GEN-C -> 6.20TN-E", "5.03GEN-C -> 6.20PRO-B6", "5.03GEN-C -> 6.35PRO-B6", "6.20PRO-B6 -> 6.35PRO-B6", "6.20TN-E -> 6.35PRO-B6", "6.20PRO-B6 -> 6.20TN-E", "6.20TN-E -> 6.20PRO-B6", "6.35PRO-B6 -> 6.20TN-E", "6.35PRO-B6 -> 6.20PRO-B6", "6.20PRO-B6 -> 5.03GEN-C", "6.20TN-E -> 5.03GEN-C"}
while true do pad = Controls.read() screen:clear() for num = 1, 11 do if num==index then screen:fontPrint(font,25,10+num*20,items[num],green) else screen:fontPrint(font,25,10+num*20,items[num],white) end end
if pad:up() and index > 1 then System.sleep(75) index = index-1 end
if pad:down() and index < 11 then System.sleep(75) index = index+1 end
if pad:cross() then dofile("1.lua") end screen.flip() end
Будут ошибки - докладывай ! Сообщение отредактировано 6 июня 2011 21:34. Редактировалось 1 раз(а)
|
|
|
|
|
#24 Добавлено: 6 июня 2011 21:44 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, выводит список белым цветом, нажимаю вверх пишет "Error: Script.lua:29: attempt to compare number with nil", нажимаю вниз пишет "Error: Script.lua:34: attempt to compare number with nil" . И сделай, пожалуйста, чтобы для каждого был свой файл загрузки 1.lua для первого, 2.lua для второго и т.д.
|
|
|
|
|
#25 Добавлено: 6 июня 2011 21:53 |
|
|
|
|
Посетители
vladgalay
--
Возраст: 28 | |
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 14 лет 8 месяцев
|
|
nikita1996spb, первая ошибка - стандартная ошибка Lua при работе с массивами . Но исправить её можно ! А насчёт второго - сделаю !
|
|
|
|
|
#26 Добавлено: 6 июня 2011 21:58 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, это хорошо, а то я уж подумал...
|
|
|
|
|
#27 Добавлено: 6 июня 2011 22:16 |
|
|
|
|
Посетители
vladgalay
--
Возраст: 28 | |
Сообщений: 1400
Благодарности: 22 / 150
Репутация: 190
Предупреждений: 0
Друзья
Тут: 14 лет 8 месяцев
|
|
nikita1996spb, попробуй следующее: white = Color.new(255,255,255) green = Color.new(0,255,0) font = Font.load("1.ttf") font:setPixelSizes(16,16)
items = {" "," ", "5.03GEN-C -> 6.20TN-E","1.lua", "5.03GEN-C -> 6.20PRO-B6","2.lua", "5.03GEN-C -> 6.35PRO-B6","3.lua", "6.20PRO-B6 -> 6.35PRO-B6","4.lua", "6.20TN-E -> 6.35PRO-B6","5.lua", "6.20PRO-B6 -> 6.20TN-E","6.lua", "6.20TN-E -> 6.20PRO-B6","7.lua", "6.35PRO-B6 -> 6.20TN-E","8.lua", "6.35PRO-B6 -> 6.20PRO-B6","9.lua", "6.20PRO-B6 -> 5.03GEN-C","10.lua", "6.20TN-E -> 5.03GEN-C","11.lua"}
while true do pad = Controls.read() screen:clear() for num = 2, 12 do if num==index then screen:fontPrint(font,25,10+num*20,items[num],green) else screen:fontPrint(font,25,10+num*20,items[num],white) end end
if pad:up() and index > 2 then System.sleep(75) index = index-1 end
if pad:down() and index < 12 then System.sleep(75) index = index+1 end
if pad:cross() then dofile(index[num][2]) end screen.flip() end
Надеюсь, заработает !
|
|
|
|
|
#28 Добавлено: 6 июня 2011 22:34 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
vladgalay, теперь вот так Это просто меню, после нажатия вниз, вверх и креста соответственно. Сообщение отредактировано 6 июня 2011 22:36. Редактировалось 1 раз(а)
|
|
|
|
Спасибо за пост: 1 |
#29 Добавлено: 7 июня 2011 21:53 |
|
|
|
|
Забанен
Apple:D
--
Возраст: 27 | |
Сообщений: 11
Благодарности: 0 / 4
Репутация: 2
Предупреждений: 0
Друзья
Тут: 13 лет 7 месяцев
|
|
на луа.. должно быть без ошибок fichiers = nil
Selecteur = 1 vert = Color.new(0,255,0) noir = Color.new(0,0,0) bleu = Color.new(0,0,255) while true do
screen:clear() screen:print(30,30,"menu #1",bleu) screen:print(30,45,"menu #1",bleu) screen:print(30,60,"menu #1",bleu)
pad = Controls.read()
if pad:up() and not oldpad:up() then
Selecteur = Selecteur - 1 end
if pad:down() and not oldpad:down() then
Selecteur = Selecteur + 1 end
oldpad = Controls.read()
if Selecteur > 3 then ---- там где 3 пишем количество пунктов меню Selecteur = 1 end
if Selecteur 3 then ---- там где 3 пишем количество пунктов меню Selecteur = 1 end
if Selecteur == 1 then screen:print(240,100,"menu",red) end if Selecteur == 2 then screen:print(240,110,"menu",red) end if Selecteur == 3 then screen:print(240,120,"menu",red) end
if pad:cross() and Selecteur == 1 then ---- тут делаем пункты в меню , пишеш указание для пунктов dofile("game/main.lua") end
if pad:cross() and Selecteur == 2 then ---- тут делаем пункты в меню , пишеш указание для пунктов dofile("credits.lua") end
if pad:cross() and Selecteur == 3 then ---- тут делаем пункты в меню , пишеш указание для пунктов System.Quit() end
screen.flip() screen.waitVblankStart()
end
Добавлено спустя 59 минут 8 секунд:С курсором " -->"
fichiers = nil Selecteur = 1 vert = Color.new(0,255,0) noir = Color.new(0,0,0) bleu = Color.new(0,0,255) while true do
screen:clear() --- тут пишем менюшку растояние 34 пикс screen:print(20,20 + (Selecteur * 34),">",bleu)
pad = Controls.read()
if pad:up() and not oldpad:up() then
Selecteur = Selecteur - 1 end
if pad:down() and not oldpad:down() then
Selecteur = Selecteur + 1 end
oldpad = Controls.read()
if Selecteur > 3 then Selecteur = 1 end
if Selecteur < 3 then Selecteur = 2 end
if pad:cross() and Selecteur == 1 then dofile("game/main.lua") end
if pad:cross() and Selecteur == 2 then dofile("credits.lua") end
if pad:cross() and Selecteur == 3 then System.Quit() end
screen.flip() screen.waitVblankStart()
end
Сообщение отредактировано 7 июня 2011 21:53. Редактировалось 6 раз(а)
|
|
|
|
|
#30 Добавлено: 8 июня 2011 17:30 |
|
|
|
|
Посетители
nikita1996spb
--
Возраст: 28 | |
Сообщений: 868
Благодарности: 9 / 55
Репутация: 69
Предупреждений: 0
Друзья
Тут: 14 лет 4 месяцa
|
|
Apple:D,Огромное спасибо !!!Было пару багов, но я их исправил. Сейчас вроде всё работает ! Ты сам писал или взял откуда-то? Добавлено спустя 26 секунд:За что бан???
|
|
|
|
Добавить эту тему в |
|
|