Publicidad

Anuncios Google

Menú básico

Tutoriales de programacion PS3 y avanzados

Aqui os dejo un ejemplo de código en LUA para ps3 hecho por mi, lo único que hace es cambiar entre 3 imagenes que simulan un menú muy básico. Espero que a alguien le sirva de algo de ayuda. Sobra decir que cualquiera puede usar este código y modificarlo como quiera pero no apropiarselo, mejor que sea libre.

InitGFX(720,480);
initPads(7);
-- setsixaxis(0,1) ## Si neceistas utilizar el sixasis, descomenta esta linea
UpPress1 = 0;--variable que vale 1 si se presiona la flecha arriba
DownPress1 = 0;--variable que vale 1 si se presiona la flecha abajo
 
screenx, screeny = screenRes();
menu = { };
menu[1] = surface();menu[1]:LoadIMG("menu/menu1.bmp"); -- cargamos en la superficie una imagen 
menu[2] = surface();menu[2]:LoadIMG("menu/menu2.bmp"); -- cargamos en la superficie una imagen 
menu[3] = surface();menu[3]:LoadIMG("menu/menu3.bmp"); -- cargamos en la superficie una imagen 
--cada imagen es de 720x480 pixels, como la resolucion de la pantalla elegida
menuActual = 1;
 
function actualizarBotones()
     if up(0) < 1 then--si no esta presionado arriba             
          UpPress1 = 0;
     end
     if down(0) < 1 then--si no esta presionado abajo             
          DownPress1 = 0;
     end
end
 
function moverMenu()
     if up(0) >= 1 and UpPress1 == 0 then--si arriba y no esta presionad
          UpPress1 = 1;--ya esta presionada
          if menuActual == 2 then
               menuActual = 1;
          end
          if menuActual == 3 then
               menuActual = 2;
          end
	end
     if down(0) >= 1 and DownPress1 == 0 then--si abajo y no esta presionada
          DownPress1 = 1;--ya esta presionada
          if menuActual == 2 then
               menuActual = 3;
          end
          if menuActual == 1 then
               menuActual = 2;
          end
     end    
end
 
function mostrarMenu()--Creamos una funcion llamada screen_imagenes
     menu[menuActual]:setRectPos(0, 0);
     BlitToScreen(menu[menuActual]);
end
 
function acciones()
     if cross(0) >= 1 and menuActual == 1 then -- si presiona
		--Aqui codigo del juego
	end
	if cross(0) >= 1 and menuActual == 2 then -- si presiona
		--Aqui codigo de las opciones
	end
     if cross(0) >= 1 and menuActual == 3 then -- si presiona
		break -- Terminamos la aplicacion
	end
end
 
while true do --Empezamos el bucle 
     beginGFX() -- Iniciamos los graficos
     mostrarMenu();
     moverMenu();
     actualizarBotones();
     acciones();
     endGFX() -- Terminamos la seccion de graficos
end

Nota: Código corregido por OoNEKERAFAoO.

Quien quiera probar el código "tal cual está", lo único que tiene que hacer es crearse 3 imagenes llamadas menu1.bmp, menu2.bmp, menu3.bmp y meterlas dentro de una carpeta llamada menu. Esta carpeta y el código se debe situar en el mismo sitio que el ejecutable del emulador LUA para PS3.

4.29032
Tu voto: Ninguno Votos totales: 4.3 (62 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Dioni0396

AUN MAS SIMPLIFICADO

InitGFX(720,480) --Iniciamos Pantalla
initPads(7) --Iniciamos Pads
setsixaxis(0,1) 
screenx, screeny = screenRes() 
Menu = { } --Creamos Tabla
for i=1,3 do --Realizamos un bucle que nos permite cargar las 3 imagenes de forma simple
Menu[i] = surface();Menu[i]:LoadIMG("Menu"..i..".bmp")
end
Sel = 1
UpPress = 0
DownPress = 0
function MoverMenu()
if down(0) < 1 then
DownPress = 0
elseif up(0) < 1 then
UpPress = 0
end
if down(0) >= 1 and DownPress == 0 then
Sel = Sel + 1
DownPress = 1
elseif up(0) >= 1 and UpPress == 0 then
Sel = Sel - 1
end
Menu[Sel]:setRectPos(0, 0);
BlitToScreen(Menu[Sel])
end
while true do
beginGFX()
MoverMenu()
endGFX()
end

Imagen de Dioni0396

Todavia se puede simplificar aun mas

InitGFX(720,480);
initPads(7);
-- setsixaxis(0,1) ## Si neceistas utilizar el sixasis, descomenta esta linea
UpPress1 = 0;--variable que vale 1 si se presiona la flecha arriba
DownPress1 = 0;--variable que vale 1 si se presiona la flecha abajo
 
screenx, screeny = screenRes();
menu = { };
for i=1,3 do
menu[i] = surface();menu[i]:LoadIMG("menu/menu"..i..".bmp"); -- cargamos en la superficie una imagen en un bucle for
--cada imagen es de 720x480 pixels, como la resolucion de la pantalla elegida
menuActual = 1;
 
function actualizarBotones()
     if up(0) < 1 then--si no esta presionado arriba             
          UpPress1 = 0;
     elseif down(0) < 1 then--si no esta presionado abajo             
          DownPress1 = 0;
     end
end
 
function moverMenu()
     if up(0) >= 1 and UpPress1 == 0 then--si arriba y no esta presionad
          UpPress1 = 1;--ya esta presionada
          if menuActual == 2 then
               menuActual = 1;
          end
          if menuActual == 3 then
               menuActual = 2;
          end
	end
     if down(0) >= 1 and DownPress1 == 0 then--si abajo y no esta presionada
          DownPress1 = 1;--ya esta presionada
          if menuActual == 2 then
               menuActual = 3;
          end
          if menuActual == 1 then
               menuActual = 2;
          end
     end    
end
 
function mostrarMenu()--Creamos una funcion llamada screen_imagenes
     menu[menuActual]:setRectPos(0, 0);
     BlitToScreen(menu[menuActual]);
end
 
function acciones()
     if cross(0) >= 1 and menuActual == 1 then -- si presiona
		--Aqui codigo del juego
	end
	if cross(0) >= 1 and menuActual == 2 then -- si presiona
		--Aqui codigo de las opciones
	end
     if cross(0) >= 1 and menuActual == 3 then -- si presiona
		break -- Terminamos la aplicacion
	end
end
 
while true do --Empezamos el bucle 
     beginGFX() -- Iniciamos los graficos
     mostrarMenu();
     moverMenu();
     actualizarBotones();
     acciones();
     endGFX() -- Terminamos la seccion de graficos
end

Imagen de Dioni0396

Que alguien modifique

el post

Imagen de NEKERAFA

Se puede simplificar

Pensádolo mejor, creo que hay parte del código que se puede simplificar. Aquí se puede utilizar los dos, pero cuando alguien cree un menú de 8 opciones, puede que de error ese desarroyamiento. Esto seria simplificado:

InitGFX(720,480);
initPads(7);
-- setsixaxis(0,1) -- Si neceistas utilizar el sixasis, descomenta esta linea
UpPress1 = 0 --variable que vale 1 si se presiona la flecha arriba
DownPress1 = 0 --variable que vale 1 si se presiona la flecha abajo
 
screenx, screeny = screenRes()
menu = { }
     menu[1] = surface(),menu[1]:LoadIMG("menu/menu1.bmp") -- cargamos en la superficie una imagen 
     menu[2] = surface(),menu[2]:LoadIMG("menu/menu2.bmp") -- cargamos en la superficie una imagen 
     menu[3] = surface(),menu[3]:LoadIMG("menu/menu3.bmp") -- cargamos en la superficie una imagen 
--cada imagen es de 720x480 pixels, como la resolucion de la pantalla elegida
menuActual = 1
 
function actualizarBotones()
     if up(0) < 1 then--si no esta presionado arriba             
          UpPress1 = 0
     end
     if down(0) < 1 then--si no esta presionado abajo             
          DownPress1 = 0
     end
end
 
function moverMenu()
     if up(0) >= 1 and UpPress1 == 0 then--si arriba y no esta presionad
          UpPress1 = 1--ya esta presionada
          menuActual = menuActual + 1
	end
     if down(0) >= 1 and DownPress1 == 0 then--si abajo y no esta presionada
          DownPress1 = 1--ya esta presionada
          menuActual = menuActual - 1
     end
     if menuActual < 1 then
          -- menuActual = 3 -- Si quieres que al estar en la 1 opcion y pulsar arriba baje a la ultima, descomenta esta linea
          -- menuActual = 1 -- Si quieres que al estar en la 1 opcion y pulsar arriba se quede en esa opcion, descomenta esta linea
    end
 
     if menuActual > 3 then
          -- menuActual = 1 -- Si quieres que al estar en la 3 opcion y pulsar abajo suba a la primera, descomenta esta linea
          -- menuActual = 3 -- Si quieres que al estar en la 3 opcion y pulsar abajo se quede en esa opcion, descomenta esta linea
    end
end
 
function mostrarMenu()--Creamos una funcion llamada screen_imagenes
     menu[menuActual]:setRectPos(0, 0)
     BlitToScreen(menu[menuActual])
end
 
function acciones()
     if cross(0) >= 1 and menuActual == 1 then -- si presiona
		--Aqui codigo del juego
	end
	if cross(0) >= 1 and menuActual == 2 then -- si presiona
		--Aqui codigo de las opciones
	end
     if cross(0) >= 1 and menuActual == 3 then -- si presiona
		break -- Terminamos la aplicacion
	end
end
 
while true do --Empezamos el bucle 
     beginGFX() -- Iniciamos los graficos
     mostrarMenu()
     moverMenu()
     actualizarBotones()
     acciones()
     endGFX() -- Terminamos la seccion de graficos
end

Saludos


NekeOS, el nuevo shell para PSP

PS4 500GB OFW, PS3 320GB OFW, PS3 500GB OFW, PSP 6.39 PRO-C Fix4.

Sony Xperia Z1 Compact con Android 5.1.1

Portatil Lenovo z50-70 Intel® Core™ i7-4510U y NVIDIA GeForce 840M con Elementary OS 0.3.2 Freya (64 bits) y Windows 10 (64 bits).

Imagen de NEKERAFA

jajaja, pero no esque este

jajaja, pero no esque este corregido jajajaja

Edito: a, ya lo vi jajajaja, me tengo que graduar la vista

Imagen de Pana

MMM.... Y como lo pongo?

MMM.... Y como lo pongo? "Retocado"? XD

Imagen de NEKERAFA

Nose si funcionará

He estado probandolo y no me lo deja abrir, eso significa que tiene algun error, me pondre a buscarlo mañana y lo comentare

Imagen de anielo

Esto pa que sirve?

Esto pa que sirve?

Imagen de Pana

Es un fragmento de

Es un fragmento de programación en lenguaje LUA para PS3. En concreto, esto es la programación de un menú sencillo. Así suelto no sirve para nada... Pero a mucha gente le puede servir para aprender a programar... O si has hecho un juego y no quieres comerte la cabeza para crear el menú, loren1 nos da permiso para coger este código e implementarlo en tu homebrew (así ya tienes el menú hecho).

Un saludo.

Imagen de anielo

interesante pero la verdad yo

interesante pero la verdad yo no tengo estudios para hacer homebrew pero me informare gracias

Imagen de luis310

esto sirve :

para trabajar en nuevos homeworks utilizando luaplayer esta es la base de un menu

:P 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.