Anuncios Google

2.- Función menuprincipal y Función botonesmenu

Tutoriales Avanzados Homebrew

En este capí­tulo veremos las dos funciones que controlan el menú principal, desde el cual elegimos las opciones de juego.

En este menú la opción activa la pondremos de color verde, y el resto de color rojo. La variable que controla que opción está activa, vimos en el capí­tulo anterior que se llama opcionmenu. Según el valor que tenga opcionmenu, se mostrará como activa una opción según este esquema:

opcionmenu  = 1 => "Iniciar juego"
 
opcionmenu  = 2 => "Num. Jugadores"
 
opcionmenu  = 3 => "Puntos"
 
opcionmenu  = 4 => "Modo"
 
opcionmenu  = 5 => "Salir"

En la inicialización de variables asignamos opcionmenu=1, por lo que nada mas entrar en el menú principal, la opción activa será la de "Iniciar juego".

A continuación veremos que hace cada parte de esta función.

 


-- funcion menu
 
function menuprincipal()
 
            screen:blit(0, 0, menu)

Pone en pantalla el fondo del menú principal.

 

            if opcionmenu == 1 then
 
                        screen:fontPrint(proportional15, 120, 100, "Iniciar Juego", verdoso)
 
            else
 
                        screen:fontPrint(proportional15, 120, 100, "Iniciar Juego", rojo)
 
            end

Si opcionmemu es 1, entonces se pone en color verde el texto "Iniciar juego" en las coordenadas y con la fuente indicada. En caso contrario se pone el texto en color rojo. Para el resto de textos del menú ( "Num. Jugadores", "Puntos", "Modo" y "Salir" ) hacemos la misma comprobación, poniéndolo en verde si debe ser la opción activa, y en rojo si no lo es.

 

            if opcionmenu == 2 then
 
                        screen:fontPrint(proportional15, 120, 120, "Num. Jugadores", verdoso)
 
            else
 
                        screen:fontPrint(proportional15, 120, 120, "Num. Jugadores", rojo)   
 
            end 
 
 
 
            screen:fontPrint(proportional15, 250, 120, NumJug, rojo)

 

A continuación del texto "Num. Jugadores" se escribe el numero de jugadores elegido, según el valor de la variable NumJug. En la inicialización de variables pusimos NumJug = 1.

 

            if opcionmenu == 3 then
 
                        screen:fontPrint(proportional15, 120, 140, "Puntos", verdoso)
 
            else
 
                        screen:fontPrint(proportional15, 120, 140, "Puntos", rojo)   
 
            end
 
 
 
            screen:fontPrint(proportional15, 250, 140, puntos, rojo)

 

A continuación del texto "Puntos" se escribe el numero de jugadores elegido, según el valor de la variable puntos. En la inicialización de variables pusimos puntos = 9.

            if opcionmenu == 4 then
 
                        screen:fontPrint(proportional15, 120, 160, "Modo", verdoso)
 
            else
 
                        screen:fontPrint(proportional15, 120, 160, "Modo", rojo) 
 
            end
 
 
 
            if nivel == 1 then
 
                        screen:fontPrint(proportional15, 250, 160, "Facil", rojo)
 
                        elseif nivel == 2 then
 
                        screen:fontPrint(proportional15, 250, 160, "Medio", rojo)
 
                        elseif nivel == 3 then
 
                        screen:fontPrint(proportional15, 250, 160, "Dificil", rojo)                       
 
            end

La variable nivel indica el nivel de juego seleccionado, según el siguiente esquema:

nivel = 1  =>  "Facil"
 
nivel = 2  = > "Medio"
 
nivel = 3  =>  "Dificil"

En función del nivel elegido se pone uno u otro texto.

 

            if opcionmenu == 5 then
 
                        screen:fontPrint(proportional15, 120, 180, "Salir", verdoso)
 
            else
 
                        screen:fontPrint(proportional15, 120, 180, "Salir", rojo)
 
            end
 
 
 
 screen.waitVblankStart()
 
 
 
 screen.flip()

Ponemos en la pantalla todo lo escrito hasta ahora.

 

 botonesmenu()

 Se hace una llamada a la función botonesmenu(), para comprobar si se pulsa algún botón de la PSP con intención de cambiar alguna de las opciones del menú.

 

 screen.waitVblankStart()
 
 
 
end

 

Tras finalizar la función menuprincipal(), se vuelve al bucle principal.

Como acabamos de ver, desde la función menuprincipal() se hace una llamada a la función botonesmenu(), la cual se describe a continuación.

 

-- funcion botones menu
 
function botonesmenu()
 
pad = Controls.read()
 
if pad ~= oldPad then

Se comprueba que el botón actualmente pulsado pad no sea el mismo que se pulsó por última vez oldPad. Así­ se evita que el programa interprete como varias pulsaciones seguidas la pulsación prolongada de un botón.

Esta instrucción se podrí­a traducir por : Si el botón actualmente pulsado es diferente del botón pulsado la ultima vez, entonces... Si no se cumple esta condición, se sale directamente de la función botonesmenu().

 

            if pad:down() then    
 
                        opcionmenu = opcionmenu + 1         
 
                        if opcionmenu == 6 then
 
                                    opcionmenu = 1
 
                        end     
 
            end

Si se pulsa la fecha-abajo para indicar que queremos seleccionar la opción de menú siguiente, deberemos aumentar en 1 el valor de la variable opcionmenu. Si opcionmenu alcanza el valor 6, se hace que opcionmenu valga 1 para saltar de la última opción a la primera.

 

            if pad:up() then
 
                        opcionmenu = opcionmenu - 1         
 
                        if opcionmenu == 0 then
 
                                    opcionmenu = 5
 
                        end     
 
            end      

De forma similar se trata la pulsación de la flecha-arriba.

 

            if opcionmenu == 1 then
 
                        if pad:cross() then
 
                                    como = 2
 
                        end     
 
                        screen.waitVblankStart()
 
            end      

Si estamos situados en la primera opción “Salir” y se pulsa la X, se hace que la variable como tome el valor 2. Recuerdo que si como = 1 el bucle principal nos hará entrar en la pantalla de menú, y si como = 2 el bucle principal nos hará entrar en la pantalla de juego.

 

            if opcionmenu == 2 then
 
                        if pad:cross() then
 
                                    if NumJug == 2 then
 
                                                NumJug = 1
 
                                    else
 
                                                NumJug = 2
 
                                    end
 
                        end     
 
                        screen.waitVblankStart()
 
            end      

Si estamos situados en la segunda opción "Num. Jugadores" y se pulsa la X, si NumJug es igual a 2 se hace que NumJug sea igual a 1. Sino (cuando NumJug=1) se hace que NumJug sea igual a 2. Es decir, la pulsación de X hace alternar NumJug entre 1 y 2.

           

            if opcionmenu == 3 then
 
                        if pad:cross() then
 
                                    if puntos == puntosmenor then
 
                                                puntos = puntosmayor
 
                                    else
 
                                                puntos = puntosmenor
 
                                    end
 
                        end     
 
                        screen.waitVblankStart()
 
            end

Si estamos situados en la tercera opción "Puntos" y se pulsa la X, si puntos es igual a puntosmenor se hace que puntos sea igual a puntosmayor. Sino (cuando puntos = puntosmayor) se hace que puntos sea igual a puntosmenor. Es decir, la pulsación de X hace alternar el valor puntos entre puntosmenor y puntosmayor. Recordemos que en la inicialización de variables hicimos puntosmenor = 9 y puntosmayor = 15.

 

            if opcionmenu == 4 then
 
                        if pad:cross() then    
 
                                    nivel = nivel + 1
 
                                    if nivel == 4 then
 
                                                nivel = 1
 
                                    end
 
                                    if nivel == 1 then
 
                                                VelPelotaIni = 6
 
                                    elseif nivel == 2 then
 
                                                VelPelotaIni = 8
 
                                    elseif nivel == 3 then
 
                                                VelPelotaIni = 10
 
                                    end                             
 
                        end
 
                        screen.waitVblankStart()
 
            end

Si estamos situados en la cuarta opción "Modo" y se pulsa la X, se aumenta el valor de nivel en 1. Si nivel llega a 4 se hace que nivel sea 1, ya que solo hay tres modos de juego. En función del valor de nivel, es decir, en función del modo de juego, se asigna a la variable VelPelotaIni un valor diferente. Recordemos que VelPelotaIni es la velocidad inicial de la pelota, cuando comienza el juego de un punto. Es decir según el modo de juego, "Facil", "Medio" o "Dificil", la velocidad inicial de la pelota será mayor o menor.

 

            oldPad = pad

Aquí­ se asigna a oldPad el valor del botón que se acaba de pulsar ( pad ). Como vimos al principio de la función botonesmenu(), oldpad se utiliza para evitar problemas con la pulsación prolongada de un botón.

 

end

Fin de la condicional if pad ~= oldPad then

           

end

Fin de la función botonesmenu(). Desde aquí­ el programa vuelve a la función menuprincipal().

 

4.61111
Tu voto: Ninguno Votos totales: 4.6 (18 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.

PROYECTO

Hola. Estoy trabajando en este juego y intento poner un selector de pista, pero solo consigo que me salga el texto en el menu, y no puedo poner el cursor encima. Ya tengo las imágenes preparadas, pero me faltan las funciones. AYUDAAAA!!!

 

EDITO: Ya está!! He acabado de modifixcar el juego y ya tiene selector de pista!! De momento Hierba y tierra batida. 

Imagen de sefirotsama

PERFECT

Me parece muy buen tutorial y muy buena la idea de crear tutoriales respecto el cómo para programar para PSP.

Solamente creo que haria falta lo más típico en manuales de programación y aclarar el tipo de funciones para una programación mejor, condicionales, bucles, el trato con boleanos, tipos de variables y su iniciación, etc.

Aunque con los ejemplos se aclara uno bastante bien.

Sin duda me parece una idea fantastica.

Sefirot Sama, The One Winged Angel


Sefirot Sama, The One Winged Angel

Imagen de Unicorn

En el resto de tutoriales

que tenemos en tutoriales avanzados, se habla de algunos puntos que comentas. Pero respecto a detallar todas las funciones...es poco menos que imposible...me temo que ahi tendreis que tirar de Google o documentacion concreta de lo que esteis trabajando en ese momento, casi siempre (o siempre) en ingles. Un saludo, nos alegramos de que te guste la iniciativa, agradeceselo a los creadores o traductores de los tutos ;-)


¿Necesitas ayuda? Usa el buscador, arriba a la derecha de BETA. ¿No lo encuentras? Postea en el lugar adecuado por favor ;-)


Para recibir ayuda más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda revisar el Manual del perfecto forero y las Normas de la Comunidad.

Imagen de pucelano

Como bien dice Unicorn, en

Como bien dice Unicorn, en los otros tutoriales ya se han visto la mayoria de las funciones que utiliza este juego. Y si alguna es nueva, se explica detalladamente. Recuerdo que para seguir el presente tutorial es necesario haber leido bien los otros dos.

Este tutorial muestra que conociendo muy pocas funciones de LUA, se puede hacer un juego. Pero es imprescindible tener cierta imaginación o habilidad para poder hacer un programa, la cual se consigue en parte sabiendo buscar la información necesaria, y en parte con la práctica.

Para conocer en profundidad un lenguaje de programación ya están los libros. Estos tutoriales son para tener un primer contacto y perder el miedo. 

Un saludo


 

Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.


Descargar Homebrew de BETA, gratis. Visualizar un tutorial, gratis. Iniciarse en la programacion en español, gratis. Colaborar a que la scene PSP en español crezca, no tiene precio.

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.