Anuncios Google

4.- Función botones juego y Función pausar

Tutoriales Avanzados Homebrewes

En este capí­tulo veremos las dos funciones que controlan la pulsación de botones durante el juego. Se detectará la pulsación de Flecha-arriba, Flecha-abajo, X y Triángulo para mover las barras de juego, y la tecla START para pausar o salir del juego. Veremos también como dotar al juego de “inteligencia artificial” para que este controle la barra derecha en el modo de 1 jugador.

-- funcion botonesjuego
 
function botonesjuego()
 
  pad = Controls.read()
 
            if pad:down() then
                        if PosBarraIzda < 242 then
                                    PosBarraIzda = PosBarraIzda + VelBarra
                        end
            end

Si se pulsa Flecha-abajo, comprobamos que la barra izquierda no haya llegado a la parte inferior de la pantalla. Si es así­ desplazamos la barra izquierda hacia abajo sumando al valor de la variable PosBarraIzda el valor de VelBarra que vimos que era 8 pixels.

 

            if pad:up() then
                        if PosBarraIzda > 30 then     
                                    PosBarraIzda = PosBarraIzda - VelBarra
                        end               
            end      

Si se pulsa Flecha-arriba, comprobamos que la barra izquierda no haya llegado a la parte superior de la pantalla. Si es así­ desplazamos la barra izquierda hacia arriba restando al valor de la variable PosBarraIzda el valor de VelBarra.

            if NumJug == 2 then
                        if pad:cross() then
                                    if PosBarraDrch < 242 then
                                                PosBarraDrch = PosBarraDrch + VelBarra
                                    end
                        end
 
                        if pad:triangle() then
                                    if PosBarraDrch > 30 then     
                                                PosBarraDrch = PosBarraDrch - VelBarra
                                    end               
                        end   
            end

Esta condicional se ejecuta cuando se ha elegido 2 jugadores. En este caso NumJug = 2.

Si se pulsa X, comprobamos que la barra derecha no haya llegado a la parte inferior de la pantalla. Si es así­ desplazamos la barra derecha hacia abajo sumando al valor de la variable PosBarraDrch el valor de VelBarra que vimos que era 8 pixels.

Si se pulsa Triángulo, comprobamos que la barra derecha no haya llegado a la parte superior de la pantalla. Si es así­ desplazamos la barra derecha hacia arriba restando al valor de la variable PosBarraDrch el valor de VelBarra.

            if NumJug == 1 then
                        if x > 250 then
                                    if y > PosBarraDrch then
                                                if PosBarraDrch < 242 then
                                                            PosBarraDrch = PosBarraDrch + VelBarra
                                                end
                                    end
                                    if y < PosBarraDrch then
                                                if PosBarraDrch > 30 then     
                                                            PosBarraDrch = PosBarraDrch - VelBarra
                                                end               
                                    end   
                        end
            end

 

Esta condicional se ejecuta cuando se ha elegido 1 jugador. En este caso NumJug = 1. Veamos como funciona la “Inteligencia Artificial” casera que controla la barra derecha.

Si la coordenada x de la pelota es mayor de 250, hacemos que la barra derecha vaya a buscar la pelota. Si no utilizasemos esta primera condicional, la barra derecha siempre estarí­a alineada con la pelota, y seria imposible ganar a la PSP. De este modo hay jugadas en que la barra derecha no tiene tiempo de corregir su posición, y la pelota la sobrepasa.

La condicional if y > PosBarraDrch then  se cumple cuando la pelota está por debajo de la barra. En este caso desplazamos la barra derecha hacia abajo VelBarra pixels, siempre y cuando no esté ya en la posición inferior de la pantalla ( if PosBarraDrch < 242 then ).

La condicional if y < PosBarraDrch then  se cumple cuando la pelota está por encima de la barra. En este caso desplazamos la barra derecha hacia arriba VelBarra pixels, siempre y cuando no esté ya en la posición superior de la pantalla ( if PosBarraDrch < 242 then ).

            if pad ~= oldpad then  
                        if pad:start() then
                                    oldpad=pad
                                    pausar()
                        end
            end

Aquí­ se detecta si se ha pulsado el botón START para llamar a la función que hace la pausa del juego.        

            oldpad = pad
end

 

A continuación vemos la función pausar() que hace que el juego se pause, para permitir salir del mismo o continuar cuando se desee.

 

-- Funcion Pausar
 
function pausar()
 
            screen:blit(0, 0, fondo)
 
            screen:blit(x-5, y-5, pelota)
 
            screen:blit(0, PosBarraIzda - 30, BarraIzda)
 
            screen:blit(470, PosBarraDrch - 30, BarraDrch)

Enviamos a la pantalla el fondo, la pelota y las barras de juego en la última posición calculada.

 

            screen:fontPrint(proportional15, 190, 130, "Juego en Pausa", rojo)

Enviamos a la pantalla el mensaje "Juego en Pausa".

 

            screen:fontPrint(proportional15, 120, 160, "START=Continuar   SELECT=Salir", rojo)

Enviamos a la pantalla el mensaje "START=Continuar   SELECT=Salir".

 

            screen:fontPrint(proportional25, 210, 30, PuntosIzda, rojo)
 
            screen:fontPrint(proportional25, 260, 30, PuntosDrch, rojo)   
 
Enviamos a la pantalla las puntuaciones de los 2 jugadores.
 
            screen.flip()
Mostramos la nueva pantalla creada.
 
            while true do
                        pad = Controls.read()
                        if pad ~= oldpad then
                                    if pad:start() then
                                                break
                                    end
                                    if pad:select() then
                                                como = 1
                                                inicializar()
                                                break
                                    end
                                    oldpad = pad
                        end
            end

Este bucle se ejecuta indefinidamente a menos que se pulse START o SELECT.

Si se pulsa START se sale del bucle y a continuación de la función, regresando a la función  botonesjuego(), y por tanto se continua el juego donde se había pausado.

Si se pulsa SELECT se le da a la variable como el valor 1, para indicar que se debe ejecutar la pantalla de menú al llegar al bucle principal. A continuación se hace una llamada a la función inicializar() que ya veremos en el capí­tulo 6 que se utiliza para inicializar todas las variables cuando se regresa a la pantalla de menú. Seguidamente se sale del bucle y sucesivamente se sale de las funciones pausar(), botonesjuego()juego() . Al llegar al bucle principal este nos enviará a la pantalla de menú.


end


Para terminar se indica el fin de la función pausar().

 

4.5
Tu voto: Ninguno Votos totales: 4.5 (14 votos)

Anuncios Google