ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Ejemplo De Juego En Lua


Enviado por   •  6 de Julio de 2013  •  11.147 Palabras (45 Páginas)  •  893 Visitas

Página 1 de 45

Ejemplo de juego programado en LUA

Mediante este tutorial se pretende explicar el funcionamiento de un juego hecho en LUA. Se trata del juego TenisLUA, el cual podéis descargar desde el apartado Juegos.

La intención de este tutorial es, mediante un caso práctico, ver como está estructurado un juego. Veremos como se inicializan las variables utilizadas en el juego, como se cargan la imágenes y sonidos, como desde el menú principal se eligen diferentes opciones de juego y como se controla la pelota y las barras que mueven los jugadores. Es el primer juego que hago, por lo que espero recibir muchas crí¬ticas constructivas de los expertos en programación.

Existen muchos tipos de juegos, como puzzles, plataformas, carreras, con movimientos en 2 o 3 dimensiones, etc. Cada uno de ellos es internamente muy diferente de los demás. El juego elegido para el tutorial es un 2 dimensiones muy sencillo, por lo que le considero ideal para aprender. De hecho el primer juego de ordenador creado fue el famoso Pong: un juego de tenis en 2 dimensiones.

Por ser LUA un lenguaje de programación abierto, sin compilar, podemos editar cualquier juego y ver como funciona internamente. De esta forma es más fácil aprender a programar estudiando como están hechos otros juegos.

Como ya sabréis existen lenguajes como C++ que son muchí¬simo más potentes que LUA, pero también son más complicados y engorrosos de aprender y utilizar. Además, por estar compilados, no se puede ver fácilmente su funcionamiento.

Personalmente creo que si alguien quiere aprender a programar, es mejor empezar con un lenguaje sencillo como LUA, y más adelante, una vez se entiende como funciona un lenguaje de programación, dar el salto a C++. Pero repito, es una opinión personal.

La elección de este juego se debió a que gráficamente es muy sencillo y técnicamente no requiere de muchos conocimientos de programación en LUA. Estudiando los tutoriales de LUA de ELenDeR y mordi se aprenden prácticamente todos las comandos necesarios para hacer un juego de este tipo. Algún otro comando lo he tenido que buscar en la web oficial de LUA. Aparte son necesarios unos conocimientos muy básicos de trigonometrí¬a, como veremos más adelante. Los comandos que no se explican en este tutorial los podéis encontrar en los tutoriales de ElenDeR y mordi, cuya lectura se hace casi imprescindible.

Para poder seguir este tutorial son necesarios estos elementos:

• PSP, para poder ver el juego en funcionamiento.

• El juego TenisPSP, para poder editarlo y ver el programa.

• Notepad++ u otro similar, editor de textos para PC, que facilita la visualización del programa.

El tutorial se divide en los siguientes capí¬tulos:

1.- Inicialización de variables y Bucle principal

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

3.- Función juego, Función colisiones y Función pantalla juego

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

5.- Función control puntos y Función saque aleatorio

6.- Función finjuego, Función pantallafin y Función inicializar

1.- Inicialización de variables y Bucle principal

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

...

Descargar como (para miembros actualizados) txt (42 Kb)
Leer 44 páginas más »
Disponible sólo en Clubensayos.com