TENGO UN PROBLEMA

Hola. Soy yo otra vez, me gustaria que me corrijais un codigo programado con LUA PLAYER HM7. Es el menu de mi HB. Gracias.


--Menu de TDBD

--Almacenar imagen del menu
menu1 = Image.load("menu.png")
menu2 = Image.load("menu2.png")
menu3 = Image.load("menu3.png")

while true do
screen:clear()
pad = Controls.read()
oldpad = Controls.read()
function menu()
menu_actual = 1
if menu_actual == 1 then
screen:blit(0,0,menu1)
end
if menu_actual == 2 then
screen:blit(0,0,menu2)
end
if menu_actual == 3 then
screen:blit(0,0,menu3)
end
if pad:right() and not oldpad:right() then
menu_actual = menu_actual +1
end
if pad:left() and not oldpad:left() then
menu_actual = menu_actual -1
end
if pad:cross() and menu_actual == 1 then
dofile("./tester.lua")
end
if pad:cross() and menu_actual == 2 then
dofile("./menudump.lua")
end
if pad:cross() and menu_actual == 3 then
System.Quit()
end
end
screen.waitVblankStart()
oldpad = pad
menu()
screen.flip()
end



 

 


Anuncios Google

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 Chimecho

Traducción al español...

Eso, traduciré tu código al español xD
Cargar imagenes

Mientras verdadero hacer (es decir, siempre)
limpiar pantalla
leer controles en pad
LEER CONTROLES EN OLDPAD (wtf!)
DECLARAS FUNCION menu
()
(estas declarando a cada rato la funcion)
SETEAS MENU_ACTUAL a 1 (al estar dentro del while siempre sera 1 :S)
haces movimiento del menu, ejecuciones de scripts
fin declaracion funcion menu()
espera de sincronia vertical
oldpad=pad
menu() (wtf?, llamas menu luego de sincronizar y luego de hacer oldpad=pad?)
screen.flip()
fin

Vale, como puedes ver, necesitas primero plantear una estructura correcta
Primero, al poner olpad=controls.read() no servira de nada hacer oldpad=pad, pues reemplazaras su valor, deberias ponerlo fuera del bucle como una declaración inicial.
Luego, no se porque ultimamente veo cosas de ese tipo (declarar funciones dentro de un bucle), las funciones que no serán modificadas durante el transcurso del programa, SIEMPRE se declaran 1 sola vez, al estar dentro del while, la declaras por cada pasada...
menu_actual=1, estas diciendo que menu_actual sea 1 cada que pase, por lo tanto, nunca cambiara, eso al igual que el oldpad=controls.read() es una declaracion inicial, ponla fuera del bucle y de la funcion...
Ahora, el resto de cosas, primero relizas el programa en si, en tu caso, la llamada a la funcion menu(), luego va el oldpad=pad, para que almacene los datos de pad de esa iteración (vuelta), luego debes imprimir todo en pantalla (flip) y por ultimo el sincronismo vertical (waitvblankstart) para saber cuando continua con el siguiente frame.

Un saludo



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

XD Ereres tremendo Chimecho 

XD Ereres tremendo Chimecho 

Bieeen!!!

Ya funciona. Gracias amigoo. Te van 30 scenebitos de mi parte.

Saludos.

muy facil:al poner

muy facil:
al poner "menu_actual = 1" dentro del bucle, la psp siempre imprimira el menu 1, por eso lo que tienes que hacer es quitarlo del bucle y ponerlo fuera algo asi:

menu_actual = 1

while true do

saludos

PD: yo de tu pondria"limites" porque tu dices que si menu_actual es 1 que impirma eso, si es 2 lo otro y si es 3 lo otro , pero que pasa si es 4??pues que no imprimira nada. solucion:

pon eso al final del codigo:

if menu_actual>=4 then
      menu_actual=1
elseif menu_actual<=0 then
      menu_actual=3
end

Imagen de -chus-

Cual?

Explicate mejor y di cual linea esta el error o que quieres que se corrija? un saludo

El problema es que...

Te sale el "menu1" pero cuando le doy a "derecha" no sale el "menu2". Es muy raro. Espero que me puedas ayudar.

Saludos.

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.