Tutorial De Programacion En LUA - Capitulo 7

Todo sobre la primera portátil de Sony

Moderadores: Webmaster, Administrador, Moderador

Tutorial De Programacion En LUA - Capitulo 7

Notapor the_marioga » Viernes, 02 Abril 2010, 11:47

Capitulo 7. Menus Con cursor(joystick) basado en el menu UMD de Dark_cloud

Vamos con otro capitulo mas que os tengo abandonaos y luego me llorais

Vamos a aprender a hacer menos con cursor(si esa flechita como la que has usado para poner esta pagina)

Necesitais usar la imaginacion, luego vereis pk

Código: Seleccionar todo
-- Colores --
azul = Color.new(0,0,255)
blanco = Color.new(255,255,255)
-- Imagenes --
fondo = Image.load("ms0:/PSP/GAME/Programa/Imagenes/fondo.png")
cursor = Image.load("ms0:/PSP/GAME/Programa/Imagenes/cursor.png")
icono1 = Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono1.png")
icono1sel = Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono1sel.png")
icono2 = Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono2.png")
icono2sel = Image.load("ms0:/PSP/GAME/Programa/Imagenes/icono2sel.png")


Lo de siempre carga de imagenes y colores. Supongamos que tenemos esas imagenes con esos nombres. Fondo es el fondo, cursor

es la flechita, icono1 es la imagen de la opcion 1, icono1sel es la opcion uno seleccionada(es decir con el cursor encima), icono2 la

opcion 2 y icono2sel pues la 2 elegida. Aqui se puede variar la variable, el nombre de la imagen, si quieres que cambie al

seleccionarla o no, etc...

Código: Seleccionar todo
-- Variables --
x = 0
x0 = 235
y0 = 193
x1 = 0
y1 = 0
nombreiso = " "


Esto dice donde tiene que empezar el cursor al iniciar el programa

Código: Seleccionar todo
-- Controles --
function LeerPulsacion()
pad = Controls.read()
dy = pad:analogY()
dx = pad:analogX()
if math.abs(dx) > 64 then
  x0 = x0 + dx / 24
end
if math.abs(dy) > 64 then
  y0 = y0 + dy / 24
end
if pad:up() then
  y0 = y0 - 8
end
if pad:down() then
  y0 = y0 + 8
end
if pad:right() then
  x0 = x0 + 8
end
if pad:left() then
  x0 = x0 - 8
end
if x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 and pad:cross() then
screen:clear()
 screen:print(1, 1, "Menu Ingles", blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 and pad:cross() then
  screen:clear()
screen:print(1, 1, "Menu Español", blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end
if pad:circle() then
dofile("ms0:/PSP/GAME/MultiR-evolutionLUA/script.lua")
end
if pad:start() then
break
end
end


Lectura de pulsaciones, analizamos por partes

Código: Seleccionar todo
dy = pad:analogY()
dx = pad:analogX()
if math.abs(dx) > 64 then
  x0 = x0 + dx / 24
end
if math.abs(dy) > 64 then
  y0 = y0 + dy / 24
end


Esto controla el movimiento del cursor con el joy stick

Código: Seleccionar todo
if pad:up() then
  y0 = y0 - 8
end
if pad:down() then
  y0 = y0 + 8
end
if pad:right() then
  x0 = x0 + 8
end
if pad:left() then
  x0 = x0 - 8
end


Esto el movimiento por los botones normales

Código: Seleccionar todo
if x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 and pad:cross() then
screen:clear()
 screen:print(1, 1, "Menu Ingles", blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 and pad:cross() then
  screen:clear()
screen:print(1, 1, "Menu Español", blanco)
screen.flip()
screen:waitVblanckStart(200)
screen.flip()
end


Esto son las pulsaciones de X si las haces dentro de las coordenada que pone se ejecuta, sino, pues no

Código: Seleccionar todo
-- Bucle Principal --
while true do
if x0<0 then
x0=0
end
if x0>478 then
x0=478
end
if y0<0 then
y0=0
end
if y0>270 then
y0=270
end
x1 = x0
y1 = y0
-- Menu --
screen:blit(0,0,fondo)
screen:blit(10,20,icono1)
screen:blit(210,20,icono2)
-- Damos Efecto al pasar el Cursor Encima --
if x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 then
  screen:blit(32,81,icono1sel)
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 then
  screen:blit(190,81,icono2sel)
end
screen:blit(x1,y1,cursor)
screen.waitVblankStart()
screen.flip()
end


Analizamos

Código: Seleccionar todo
if x0<0 then
x0=0
end
if x0>478 then
x0=478
end
if y0<0 then
y0=0
end
if y0>270 then
y0=270
end


Esto es para que no se salga el cursor de la pantalla

Código: Seleccionar todo
x1 = x0
y1 = y0


Esto cambia el nombre a las variables para no liarse

Código: Seleccionar todo
screen:blit(0,0,fondo)
screen:blit(10,20,icono1)
screen:blit(210,20,icono2)
-- Damos Efecto al pasar el Cursor Encima --
if x0 >= 10 and x0 <= 200 and y0 >= 20 and y0 <= 250 then
  screen:blit(32,81,icono1sel)
end
if x0 >= 210 and x0 <= 400 and y0 >= 20 and y0 <= 250 then
  screen:blit(190,81,icono2sel)
end
screen:blit(x1,y1,cursor)
screen.waitVblankStart()
screen.flip()
end


Esto muestra las imagenes y hace que si se pasa por encima de las imagenes, se cambien a las seleccionadas


Y ya esta, perdonar que este un poco mal explicado, tal vez mas alante lo explique mejor, pero ya sabeis, un programador aprende investigando
Avatar de Usuario
the_marioga
Colaborador
Colaborador
 
Mensajes: 21
Registrado: Miércoles, 17 Febrero 2010, 14:56

Volver a PlayStation Portable

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron