Lo primero que hace el programa es cargar las imágenes que necesita el juego:
--carga imagenes lua = Image.load("Imagenes/lua.png") (pantalla de presentación de LUA) tenis = Image.load("Imagenes/tenis.png" ) (pantalla de presentación del juego) menu = Image.load("Imagenes/menu.png") (fondo de la pantalla de menú) fondo = Image.load("Imagenes/fondo.png") (fondo de la pantalla de juego) pelota = Image.load("Imagenes/pelota.png") (imagen de la pelota) BarraIzda = Image.load("Imagenes/BarraIzqda.png") (imagen para la barra izquierda) BarraDrch = Image.load("Imagenes/BarraDrcha.png") (imagen para la barra derecha)
A continuación se cargan los sonidos:
-- carga sonidos SonidoPunto = Sound.load ("Sonidos/punto.wav",false) (sonido cuando se consigue un punto) SonidoPared = Sound.load ("Sonidos/pared.wav",false) (sonido cuando la bola da en una pared) SonidoBarra = Sound.load ("Sonidos/barra.wav",false) (sonido cuando la bola da en una barra) SonidoEsquina = Sound.load ("Sonidos/esquina.wav",false) (sonido cuando la bola da en una esquina de una barra)
A continuación lo que se hace es inicializar todas las variables que se van a utilizar durante el juego. De esta manera, cuando se vayan a utilizar en el programa, su valor ya estará definido:
-- inicializa variables menu opcionmenu = 1 (Opción del menú que está seleccionada) NumJug = 1 (Número de jugadores seleccionado) puntosmenor = 9 (Número de puntos menor que dura el juego) puntosmayor = 15 (Número de puntos mayor que dura el juego) puntos = puntosmenor (Número de puntos que dura el juego, por defecto el menor) nivel = 1 (Nivel de dificultad del juego) como = 1 (Indica en que situación se está: 1 = pantalla menú, 2 = pantalla juego) -- inicializa variables puntos PuntosIzda = 0 (Puntos conseguidos por el jugador de la izquierda) PuntosDrch = 0 (Puntos conseguidos por el jugador de la derecha) -- variables pelota x = 30 (Coordenada X de la pelota) y = 136 (Coordenada Y de la pelota) VelPelotaIni = 6 (Velocidad inicial de la pelota, pixels que avanza en cada movimiento) VelPelota = VelPelotaIni (Velocidad de la pelota) pi = math.atan(1) * 4 (Calculo de pi, para utilizar a continuación) AngPico = 30 (Angulo en grados que varia la dirección de la pelota, cuando da en la esquina de una barra) AngPico = (AngPico * pi ) / 180 (El ángulo pasado a radianes) aleat = math.random(1,4) if aleat == 1 then angulo = -30 elseif aleat == 2 then angulo = -20 elseif aleat == 3 then angulo = 20 elseif aleat == 4 then angulo = 30 end
Mediante este grupo de comandos se calcula la dirección inicial de la pelota, de forma aleatoria. La función matemática math.random(1,4) devuelve un número pseudoaleatorio comprendido entre 1 y 4. En función de este número se selecciona el ángulo que forma la dirección de desplazamiento de la pelota.
AngPelota = (angulo * pi) / 180 (Angulo de desplazamiento de la pelota, pasado a radianes) NumGolpes = 0 (Contador de número de golpes, para cada punto jugado. En uno de los siguientes capítulos veremos para que utilizamos este contador) -- Variables Barras PosBarraIzda = 136 (Posición inicial en pantalla de la barra izquierda) PosBarraDrch = 136 (Posición inicial en pantalla de la barra derecha) VelBarra = 8 (Número de pixels que se desplaza una barra por cada pulsación de botón)
A continuación se definen los colores que se van a utilizar:
-- colores rojo = Color.new(255,0,0) verde = Color.new(0,255,0) verdoso = Color.new(204,255,0)
Definimos las fuentes que se utilizaran en el menú principal y en la pantalla de juego:
-- fuentes proportional25 = Font.createProportional() proportional25:setPixelSizes(0, 25) proportional15 = Font.createProportional() proportional15:setPixelSizes(0, 15)
La fuente llamada proportional25 será una fuente de tipo proporcional, de altura 25 pixels.
La fuente llamada proportional15 será una fuente de tipo proporcional, de altura 15 pixels.
A continuación se muestran consecutivamente las dos pantallas de presentación, durante un tiempo de 80/60 segundos.
-- pantallas presentacion screen:blit(0, 0, lua) screen.waitVblankStart() screen.flip() screen.waitVblankStart(80) screen:blit(0, 0, tenis) screen.waitVblankStart() screen.flip() screen.waitVblankStart(80)
Lo siguiente que aparece en el programa son las declaraciones de funciones que utilizaremos durante el juego, y que veremos en los siguientes capítulos.
Por último se entra en el bucle principal del programa.
< -- Bucle principal while true do if como == 1 then menuprincipal() end if como == 2 then juego() end if opcionmenu == 5 then pad = Controls.read() if pad:cross() then screen.waitVblankStart() break end end end
Los comandos contenidos dentro del bucle “while true do ...... end” se repiten indefinidamente, a menos que se ejecute un comando “break” dentro del bucle.
Si la variable “como” es 1, entonces se hace una llamada a la función “menuprincipal()”, la cual muestra y controla la pantalla del menú principal.
Si la variable “como” es 2, se hace una llamada a la función “juego()”, la cual muestra y controla la pantalla de juego.
Por último, si la variable “opcionmenu” es 5 y se pulsa la X, entonces se ejecuta el comando “break” que nos hará salir del programa y finalizar el juego. Como ya veremos, la variable “opcionmenu” toma el valor 5 cuando se ha seleccionado la opción “SALIR” del menú principal.
Comentarios
ola
Ola pucelano mira mi problema es el siguiente mira
yo estoy haciendo un juego de ping pong pero cuando lo pongo en la psp me sale error en la linea 99 es decir en las fuentes dice que font is a nil value a que se debe esto? saludos
Twitter: @pepingoelhacker
ayuda
esta bueno el tutorial pero nesecito el juego de tenis donde pudo bajarlo
grasiasssssssssssssssssssssss
grasiasssssssssssssssssssssssssssssss
Cuando empeze con lua, el
Cuando empeze con lua, el juego de tenis nunca me funciono en mi psp... manda error... pero hay varios ejemplos censillisimos sin juego te los recomiendo, con esos aprendi yo... cualquier duda me avisas por MP y te puedo ayudar... Saludoss!!
http://psp.scenebeta.com/tutorial/una-forma-alternativa-de-iniciarse-en-lua
Con esos sales bien preparado basicamente en el lua... buenisimo...
PhAnThom...
COBHC...
para cargar las imagenes k quiero
tengo k meterlas en una carpeta o algo?¿
Wow, eres bastante bueno en
Wow, eres bastante bueno en esto de LUA...