You are on page 1of 17

PRIMER PROYECTO

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

ORGANIZACIN DE LENGUAJES Y COMPILADORES 1

SEGUNDO SEMESTRE 2011


1 OBJETIVOS 1.1 OBJETIVOS GENERALES Que el estudiante aplique los conocimientos aprendidos en el curso de Compiladores 1 y Lenguajes Formales de Programacin. Que el estudiante implemente las fases de un compilador en el anlisis lxico y anlisis sintctico. Que el estudiante comprenda y utilice las herramientas jlex y cup.

1.2 OBJETIVOS ESPECFICOS Aplicar el concepto de compiladores como alternativa de solucin de problemas. Que el estudiante realice una aplicacin interactiva que trabaje conjuntamente con el analizador. Que el estudiante sea capaz de crear gramticas y de recuperarse de errores lxicos, sintcticos. Iniciar el proceso de aprendizaje de herramientas generadoras de Analizadores Lxicos y Sintcticos.

CONTENIDO 1 Objetivos .................................................................................................................................................... 1 1.1 Objetivos Generales ............................................................................................................................ 1 1.2 Objetivos Especficos ........................................................................................................................... 1 2 Introduccin ............................................................................................................................................... 3 3 Descripcin del problema .......................................................................................................................... 3 3.1 Descripcin Grafica.............................................................................................................................. 4 3.2 Archivo de configuracin .............................................................................................................. 4

3.2.1 Estructura de configuracin.......................................................................................................... 4 3.2.2 Fondo del escenario Etiqueta <Background> ............................................................................ 5 3.2.3 Personajes - Etiqueta <Figure> .................................................................................................... 5 3.2.4 Diseo Etiqueta <design> .......................................................................................................... 6 3.2.3 Archivo de entrada ....................................................................................................................... 8 3.3 Manipulacin de escenarios ....................................................................................................... 10 4. Aplicacin ................................................................................................................................................ 14 4.1 Interfaz Grafica .................................................................................................................................. 14 4.1.1 barra men ................................................................................................................................. 15 4.1.2 Men para configurar elementos / Seleccin de elementos: ........................................................ 16 5 Consideraciones ....................................................................................................................................... 16

2 INTRODUCCIN La empresa Marvel necesita crear una herramienta capaz de realizar diferentes escenarios o niveles, para su ms novedoso videojuego (Adventure Factory), para facilitar su uso y sea agradable, til y distractor para el usuario. Se necesite que travs de un analizador sintctico se puedan crear objetos y personajes para la configuracin del videojuego, as tambin crear escenarios como fin de lograr probar o ejecutar el escenario con los personajes y objetos configurados. Tambin debe proveer una interfaz grfica amigable al usuario para crear escenarios utilizando los objetos y personajes cargados por el analizador. Y estos escenarios puedan ser exportados y guardados en un archivo de configuracin de escenario para una prxima modificacin o prueba. 3 DESCRIPCIN DEL PROBLEMA Se necesita que se desarrolle una aplicacin que a partir de un lenguaje de programacin se realice la creacin de escenarios y facilite la construccin niveles para el videojuego (Adventure Factory). Archivo de configuracin: Este archivo contiene toda la informacin sobre las propiedades de los diferentes fondos de escenarios, propiedades de personajes, atributos de objetos. Este archivo se deber cargar al iniciar la aplicacin y podr ser actualizado por otro archivo con el mismo formato que agregara nueva informacin. Fondo del escenario: Es una imagen que se coloca en sobre rea del escenario. Villanos y hroes: Ellos son los personajes que participaran en el juego, el hroe ser el personaje principal del juego que ser manipulado por el usuario, en cuanto a los villanos estos se actuaran de forma automtica. Diseo: Esta rea ser utilizada para construir nuestros escenarios, entre los objetos que podremos configurar son: o Meta: Es el objetivo del nivel, cuando el hroe llegue hasta la meta se finaliza de forma satisfactoria el juego, es representado por una puerta o salida. o Objetos de Destruccin: Estas pueden ser armas que sern de ayuda al hroe para eliminar los villanos ahora los objetos bombas sern posicionados para que el hroe pierda vida o energa. o Bonus: Este objeto proporcionara vida o energa al personaje principal. o Bloques: Los bloques sern utilizados para crear pisos y paredes en todo el rea.

Archivo de configuracin de los escenarios: Este archivo contiene la ubicacin de los personajes, objetos, paredes y pisos. Despus de cargar este archivo se podr visualizar el escenario, posteriormente podremos hacer un test del escenario al probar o ejecutar el escenario.

3.1 DESCRIPCIN GRAFICA

COMPILACIN

CREACIN DE ESCENARIOS O NIVELES (A TRAVS DE UN ANALIZADOR O INTERFAZ GRAFICA AMIGABLE) EXPORTAR EL ESCENARIO 3.2 ARCHIVO DE CONFIGURACIN 3.2.1 ESTRUCTURA DE CONFIGURACIN

EJECUCIN O PRUEBA DEL VIDEOJUEGO SOBRE EL ESCENARIO CREADO

Este archivo se cargara al inicio de la aplicacin, se puede cargar otros archivos para aadir elementos, cada etiqueta o atributo en este archivo puede venir en cualquier orden.

<configuration> <background> {/** Propiedades para el fondo de pantalla**/} , { /** Propiedades para el fondo de pantalla**/} </background> <figure> { /** Propiedades para los personajes **/ } , { /** Propiedades para los personajes **/ } </figure> <design> { /** Propiedades para los objetos o elementos **/ } , { /** Propiedades para los objetos o elementos **/ } </design> </configuration>

Atributos Principales: x-nombre Identificador nico del personaje u objeto cada objeto debe tener uno en caso contrario se debe descartar. Iniciando con una letra seguida de letra, letra , nmero o guion bajo. En caso de reconocer un elemento existente se debe mostrar un mensaje de error y eliminar el segundo elemento encontrado. Ubicacin o direccin de la imagen, esta direccin estar encerrada entre comillas. Para cada elemento, pueden existir mltiples tipos, por ello esta nos ayudara a descartar algunas propiedades del objeto.

x-imagen x-tipo

3.2.2 FONDO DEL ESCENARIO ETIQUETA <BACKGROUND> Es una imagen que se coloca en sobre rea del escenario, esta se colocara en el primera posicin del escenario y esta se ajustara al tamao de la pantalla o se rellenara de algn color el espacio sobrante. En el archivo de configuracin puede venir n-elementos de fondo de escenario, para posteriormente ser seleccionado un elemento. <background> { x-nombre=Fondo_1; x-Imagen="/home/proyecto1/torre.png"; }, { x-nombre=Fondo_2; x-Imagen="/home/proyecto1/castillo.png"; } </background> 3.2.3 PERSONAJES - ETIQUETA <FIGURE> Son cada uno de las figuras, ya sean hroes o villanos que aparecen en el juego que tiene diferentes atributos, para su configuracin. En el archivo de configuracin puede venir n-figuras de personaje, para posteriormente ser seleccionar un elemento hroe o personaje principal y n-villanos. Atributo x-vida Descripcin Tipo: Entero Indicada la cantidad de vida o energa tiene el personaje, esta puede aumentar al sumar un objeto bonus o disminuir al ser atacado por un enemigo o objeto

x-tipo

destructivo que le haga perder vida. Opcional De no existir obtendr un valor por defecto Tipo: x-heroe | x-villano Se podrn crear n-personajes de cualquier tipo, estos pueden ser hroes o villanos. El tipo hroe se podr declarar ms de una vez, pero solo se podr seleccionar para jugar nicamente una vez, este es con el que se va a jugar la partida. El villano es el enemigo del hroe y tiene la funcin de terminar con la vida o energa del hroe, si el hroe llega a tocar al villano este perder el nivel de vida indicado. El hroe ser movilizado por el usuario y el villano se mover automticamente en funcin de suelo (bloque) girando al llegar al no encontrar suelo o pared (bloque). Tipo: Entero Opcional De no existir obtendr un valor por defecto Esta indica la cantidad de destruccin que provocara a otro personaje sobre la energa o vida. Informacin o descripcin de los personajes, que puede ayudar a escoger el personaje al usuario. Opcional De no existir obtendr un valor por defecto

x-destruir

x-descripcin

<figure> { x-nombre=Rey; x-vida=10; x-Imagen="/home/proyecto1/heroe1.png"; x-tipo=x-heroe; x-destruir=1; x-descripcion="El rey personaje dirige a la nacion, luchara para defenderla"; }, { x-nombre=soldado; x-vida=2; x-Imagen="/home/proyecto1/Villano1.png"; x-tipo=x-villano; x-destruir=2; x-descripcion="Perteneciente a la nacion enemiga buscando vencer al enemigo con su rifle "; } </figure> 3.2.4 DISEO ETIQUETA <DESIGN> Existen diferentes objetos para su configuracin entre ellos:

Destruccin: Estos objetos ayudaran al hroe o personaje principal a destruir a sus enemigos (armas) como tambin existirn trampas (bombas) que provocarn que el pierda vida o energa. Bonus: Estos elementos darn vida o energa a nuestro personaje principal. Paredes o Suelo (Bloques): Para que los personajes se puedan movilizar sobre el escenario y no caigan y pierdan toda su energa debern existir suelo, o para que sea ms complicado llegar a su destino deber existir paredes, en caso de no existir los personajes caern perdiendo su energa o vida y terminando el juego. Meta: Representara el fin del nivel y el llegar el representa que han ganado y terminado el juego. Los elementos de destruccin y bonus solo se podrn utilizar una vez luego desaparecern, en caso de ser armas podrn ser usado el nmero de veces indicado por el personaje principal o hroe.

Atributo x-tipo

x-destruir

x-uso

x-alcance

x-creditos

Descripcin x-meta| x-bloque | x-bonus | x-bomba | x-arma x-meta: Representa el fin del nivel o la salida del juego, si el jugador principal llega hasta ella finalizara el juego, se pueden crear mltiples metas pero nicamente se podr seleccionar 1 al crear el escenario. x-bloque: Esto representan las paredes y suelo del escenario que es necesario para que puedan transportarse los personajes en caso de no existir estos caer y terminara el juego, esto aplica para personajes y objetos (bonus y destructivos). x-bomba: Representara una trampa del enemigo, si el personaje principal o hroe toca este objeto perder vida o energa. x-arma: Este objeto ayudara al hroe a eliminar a los villanos pero contara con un nmero limitado de balas que estar limitado por la etiqueta x-uso. x-bonus: Brindara vida adicional al personaje principal, solo se podra utilizar una vez luego desaparecer. Tipo: Entero Opcional De no existir obtendr un valor por defecto Este indica la cantidad de destruccin que provocara a otro personaje sobre la energa o vida. Tipo: Entero, nicamente existe bajo la etiqueta x-arma Opcional De no existir obtendr un valor por defecto Este indica la cantidad de balas que poseer el arma que podr ser dirigido hacia los enemigos del personaje. Tipo: Entero, nicamente existe bajo la etiqueta x-arma Opcional De no existir obtendr un valor por defecto Este indica la cantidad de bloques o el alcance que tendr las balas para matar al enemigo, por ejemplo si este esta posicionado a 5 bloques y este tiene un alcance de 3 este no tendr ningn dao. Tipo: Entero, nicamente existe bajo la etiqueta x-bonus Opcional De no existir obtendr un valor por defecto x-azul| x-verde| x-celeste| x-morado| x-negro| x-gris| x-cafe| x-azul_oscuro| x-

x-color

verde_oscuro| k-blanco Tipo: Constante, nicamente existe bajo la etiqueta x-bloque Sera utilizado para agregarle un color a las paredes o suelos

<design> { x-nombre=bomba1; x-destruir=2; x-imagen="/home/proyecto1/bomba1.png" x-tipo=x-bomba; }, { x-nombre=arma1; x-destruir=1; x-imagen="/home/proyecto1/arma1.png"; x-tipo=x-arma; x-uso=10; x-alcance=4; }, { x-nombre=diamante1; x-imagen="/home/proyecto1/diamante1.png"; x-tipo=x-bonus; x-creditos=2; }, { x-nombre=suelo1; x-imagen="/home/proyecto1/piso1.png"; x-tipo=x-bloque; } , { x-nombre=Puerta_Fin; x-tipo=x-meta; x-imagen="/home/proyecto1/Salida.png"; } </design>

3.2.3 ARCHIVO DE ENTRADA <configuration> <background> { x-nombre=Fondo_1; x-Imagen="/home/proyecto1/torre.png";

}, { x-nombre=Fondo_2; x-Imagen="/home/proyecto1/castillo.png"; }, { x-Imagen="/home/proyecto1/barrio.png"; x-nombre=Fondo_3; } </background> <figure> { x-descripcion="El rey personaje dirige a la nacion, luchara para defenderla"; x-nombre=Rey; x-Imagen="/home/proyecto1/heroe1.png"; x-vida=10; x-destruir=1; x-tipo=x-heroe; }, { x-nombre=Caballero; x-vida=8; x-Imagen="/home/proyecto1/heroe2.png"; x-tipo=x-heroe; x-destruir=2; x-descripcion="Guerrero de caballo, sirven al rey"; }, { x-nombre=Princesa; x-Imagen="/home/proyecto1/princesa.png"; x-descripcion="Gobernante de la nobleza, heredera del monarca"; x-tipo=x-heroe; }, { x-nombre=soldado; x-vida=2; x-Imagen="/home/proyecto1/Villano1.png"; x-tipo=x-villano; x-destruir=2; x-descripcion="Presta servicio militar al enemigo"; } </figure> <design> { x-destruir=2; x-nombre=bomba1; x-tipo=x-bomba; x-imagen="/home/proyecto1/bomba1.png";

}, { x-uso=10; x-nombre=arma1; x-imagen="/home/proyecto1/arma1.png"; x-destruir=1; x-tipo=x-arma; x-alcance=4; }, { x-tipo=x-bonus; x-nombre=diamante1; x-imagen="/home/proyecto1/diamante1.png"; x-creditos=2; }, { x-nombre=suelo1; x-imagen="/home/proyecto1/piso1.png"; x-tipo=x-bloque; }, { x-nombre=suelo2; x-color=x-verde; x-tipo=x-bloque;}, {x-name=salida1; x-tipo=x-meta; x-imagen="/home/proyecto1/puerta.png"; }, { x-name=Puerta_Fin; x-tipo=x-meta; x-imagen="/home/proyecto1/Salida.png"; } </design> </configuration> 3.3 MANIPULACIN DE ESCENARIOS 3.3.1 ESQUEMA DEL ARCHIVO DE CONFIGURACIN DE ESCENARIOS

Este archivo ser utilizado para la creacin de escenas a partir de este, obtendremos las posiciones de los diferentes objetos y personajes. El escenario o rea estar dividir en una cuadricula de 20 x 20 para posicionar a los personajes. Cada etiqueta o atributo puede venir en cualquier orden.

<x-escenarios background=Nombre_Fondo;>

< x-Personajes > < x-heroes> Nombre_heroe ( posicion_x, posicion_y); </ x-heroes> < x-villanos> Nombre_villano( posicion_x, posicion_y); Nombre_villano ( posicion_x, posicion_y); </ x-villanos> </ x-Personajes> < x-paredes> Nombre_bloque(PosicinInicial_x..PosicinFinal_x,posicin_y); Nombre_bloque(Posicin_x,PosicinInicial_y..PosicinFinalY); Nombre_bloque(Posicin_x,Posicin_y); </ x-paredes> < x-extras> < x-armas> Nombre_arma(posicin_x,posicin_y); Nombre_arma(posicin_x,posicin_y); </ x-armas> < x-bonus> Nombre_bonus(posicin_x,posicin_y); </ x-bonus> </ x-extras> <meta> Nombre_meta(posicin_x,posicin_y); <meta> </ x-escenario>

3.3.2 HROES-VILLANOS nicamente se podr seleccionar un hroe o personaje principal, este podr ser manipulado por el usuario que probara la aplicacin. Se podrn seleccionar n-villanos, que al ejecutar la aplicacin tendrn movimiento automtico si existe suelo (bloque), en caso contrario gira y sigue caminando. En caso de que el hroe o villano no es posicionado en un bloque (suelo) este caer hasta encontrarlo en caso contrario terminara el juego. <Personajes > <heroes> Rey(4,8); </heroes> <villanos> soldado(9,10); soldado(3,3);

soldado(14,3); </villanos> </Personajes > 3.3.3 PAREDES Proporcionar un suelo, en donde de no existir el personaje puede caer y terminar el juego, as como tambin paredes que dificulten obtener fcilmente la meta. Estarn limitadas por el tamao del escenario nombre(x,y). Estas puedes ser indicadas ya se por un punto (x,y) o punto inicial x hacia un punto final x o su equivalente en y. <paredes> suelo1(0,11); suelo1(1..2,11); suelo1(0..2,10); suelo1(4,9..11); suelo1(5,10..11); suelo1(7..12,11); suelo1(12,11..10); </paredes>

3.3.4 EXTRAS Estas pueden ser ya sea objetos de bonus o de destruccin que fue descrito en la seccin 3.2.3. se pueden agregar n-objetos en cualquier posicin. <extras> <armas> arma1(10,10); bomba1(1,9); </armas> <bonus> Diamante1(8,5); Diamante1(5,3); </bonus> </extras> 3.3.5 META El personaje al llegar y tocar la meta habr terminado y ganado el juego. <meta> salida1(0,2);

<meta> 3.3.6 ARCHIVO DE ENTRADA <escenarios background=Fondo_1;> <Personajes > <heroes> Rey(4,8); </heroes> <villanos> soldado(9,10); soldado(3,3); soldado(14,3); </villanos> </Personajes> <escenario> <paredes> suelo1(0,11); suelo1(1..2,11); suelo1(0..2,10); suelo1(4,9..11); suelo1(5,10..11); suelo1(7..12,11); suelo1(12,11..10); suelo1(13,10..11); suelo1(14,9..11); suelo1(16..18,9..11); suelo1(17,8); suelo1(18,6); suelo1(13..16,4); suelo1(11,4..5); suelo1(10,5..6); suelo1(9..7,6); suelo1(7,5..4); suelo2(6..1,4); suelo2(0..1,3); suelo2(0,4); </paredes> <extras> <armas> arma1(10,10); bomba1(1,9); bomba1(11,3); </armas> <bonus> diamante(8,5); diamante(5,3); diamante(18,8);

</bonus> </extras> <meta> salida1(0,2); <meta> </escenario> 4. APLICACIN 4.1 INTERFAZ GRAFICA
Disear una interfaz amigable y comodo que facilite la creacin de escenarios, estos escenarios posteriormente de ser creados, se podrn exportar en un archivo de entrada y nuevamente sern cargados a travs del analizador y as ver los elementos guardados.

Probar y Ejecutar Los movimientos del personaje principal o hroe como mnimo debern poder realizar: Estas son las mnimas que se debern usar, pero Flecha Izquierda: Izquierda

se pueden agregar ms teclas para facilitar su Flecha Derecha: Derecha funcionamiento. Flecha Arriba: Saltar Letra A: Disparar

Villanos: Se mover automticamente, sobre el suelo girando automticamente cuando ya no encuentren suelo o encuentre una pared. 4.1.1 BARRA MEN La aplicacin deber demostrar como mnimo los siguientes mens. Tomando en cuenta que deber de ser totalmente grfica.

Archivo Nuevo

Ejecutar Compilar archivo configuracin

Ayuda de Manual de Usuario

Abrir

Compilar archivo de carga Manual Tcnico del escenario Ejecutar/Probar el juego Errores Tabla de Smbolos Exportar Escenario Acerca de

Guardar Guardar Como Salir

La especificacin del men ser de la siguiente forma Archivo o Nuevo: Despliega un nuevo documento en blanco para editar. o Abrir: Permite abrir un programa con las extensiones especificadas. o Guardar: Permite guardar el programa editado actualmente con la extensiones especificada.

Guardar Como: Permite guardar el programa actual con otro nombre con extensin especificada. o Salir: Con esta opcin se cerrar la aplicacin. Ejecutar o Compilar archivo de configuracin: Compila el archivo de configuracin que se encuentre abierto en el editor. o Compilar archivo de carga de escenario: Compila el archivo de configuracin de escenarios que se encuentre abierto en el editor. o Ejecutar / probar el juego: Al momento de tener el escenario creado, se podr probar el juego. o Errores: Mostrar los errores lxicos, sintcticos y semnticos. o Tabla de Smbolos: Muestra todos los personajes y objetos creados bajo el archivo de configuracin. o Exportar escenario: Escenario creado, se podr exportar en dos archivos de texto, con la configuracin de objetos y escenarios para su posterior uso. Ayuda o Manual de Usuario: Se deber mostrar el manual de usuario, para guiar a la persona en la utilizacin de la aplicacin. o Manual Tcnico: Se deber mostrar el manual tcnico, para entender como se ha realizado la aplicacin. o Acerca de: Permite mostrar informacin de la persona que ha creado la aplicacin.

4.1.2 MEN PARA CONFIGURAR ELEMENTOS / SELECCIN DE ELEMENTOS: Para estos mens no existen restricciones, solo debe facilitar la creacin de escenarios al usuario. 5 CONSIDERACIONES El proyecto debe ser realizado con en el lenguaje java con las herramientas JFlex/JLex y Cup en caso contrario no tendrn derecho a calificacin. Los archivos tendrn extensin (xconf) para que la aplicacin los reconozca. La realizacin del proyecto es individual, copias de proyecto tendrn un valor de 0(cero) y sern reportadas al Ingeniero y a la Escuela de Sistemas. El proyecto podr ser desarrollado en Windows o Linux. El CD a de entregar debe contener: o o o o Todo lo que respecta a la gramtica (archivos .lex, archivos .cup, archivos .bat etc.) Aplicacin Java, el nombre de la aplicacin debe contener el siguiente formato Proyecto1_<numero_carnet>. Archivo JAR, probado dado que no se calificara a travs de ningn IDE de desarrollo. Archivos de Entrada, que sean reconocibles por su aplicacin.

o Manuales de Usuario y Tcnico. La Entrega ser 16/09/2011, el horario de entrega y de calificacin se estar informando por la Universidad Virtual.

You might also like