PRIMER PROYECTO

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA

ORGANIZACIÓN 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 Programación. Que el estudiante implemente las fases de un compilador en el análisis léxico y análisis sintáctico. Que el estudiante comprenda y utilice las herramientas jlex y cup.

1.2 OBJETIVOS ESPECÍFICOS     Aplicar el concepto de compiladores como alternativa de solución de problemas. Que el estudiante realice una aplicación interactiva que trabaje conjuntamente con el analizador. Que el estudiante sea capaz de crear gramáticas y de recuperarse de errores léxicos, sintácticos. Iniciar el proceso de aprendizaje de herramientas generadoras de Analizadores Léxicos y Sintácticos.

CONTENIDO 1 Objetivos .................................................................................................................................................... 1 1.1 Objetivos Generales ............................................................................................................................ 1 1.2 Objetivos Específicos ........................................................................................................................... 1 2 Introducción ............................................................................................................................................... 3 3 Descripción del problema .......................................................................................................................... 3 3.1 Descripción Grafica.............................................................................................................................. 4 3.2 Archivo de configuración .............................................................................................................. 4

3.2.1 Estructura de configuración.......................................................................................................... 4 3.2.2 Fondo del escenario – Etiqueta <Background> ............................................................................ 5 3.2.3 Personajes - Etiqueta <Figure> .................................................................................................... 5 3.2.4 Diseño – Etiqueta <design> .......................................................................................................... 6 3.2.3 Archivo de entrada ....................................................................................................................... 8 3.3 Manipulación de escenarios ....................................................................................................... 10 4. Aplicación ................................................................................................................................................ 14 4.1 Interfaz Grafica .................................................................................................................................. 14 4.1.1 barra menú ................................................................................................................................. 15 4.1.2 Menú para configurar elementos / Selección de elementos: ........................................................ 16 5 Consideraciones ....................................................................................................................................... 16

2 INTRODUCCIÓN La empresa Marvel necesita crear una herramienta capaz de realizar diferentes escenarios o niveles, para su más novedoso videojuego (Adventure Factory), para facilitar su uso y sea agradable, útil y distractor para el usuario. Se necesite que través de un analizador sintáctico se puedan crear objetos y personajes para la configuración del videojuego, así también crear escenarios como fin de lograr probar o ejecutar el escenario con los personajes y objetos configurados. También debe proveer una interfaz gráfica 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 configuración de escenario para una próxima modificación o prueba. 3 DESCRIPCIÓN DEL PROBLEMA Se necesita que se desarrolle una aplicación que a partir de un lenguaje de programación se realice la creación de escenarios y facilite la construcción niveles para el videojuego (Adventure Factory). Archivo de configuración: Este archivo contiene toda la información sobre las propiedades de los diferentes fondos de escenarios, propiedades de personajes, atributos de objetos. Este archivo se deberá cargar al iniciar la aplicación y podrá ser actualizado por otro archivo con el mismo formato que agregara nueva información.   Fondo del escenario: Es una imagen que se coloca en sobre área del escenario. Villanos y héroes: Ellos son los personajes que participaran en el juego, el héroe será el personaje principal del juego que será manipulado por el usuario, en cuanto a los villanos estos se actuaran de forma automática. Diseño: Esta área será utilizada para construir nuestros escenarios, entre los objetos que podremos configurar son: o Meta: Es el objetivo del nivel, cuando el héroe llegue hasta la meta se finaliza de forma satisfactoria el juego, es representado por una puerta o salida. o Objetos de Destrucción: Estas pueden ser armas que serán de ayuda al héroe para eliminar los villanos ahora los objetos bombas serán posicionados para que el héroe pierda vida o energía. o Bonus: Este objeto proporcionara vida o energía al personaje principal. o Bloques: Los bloques serán utilizados para crear pisos y paredes en todo el área.

Archivo de configuración de los escenarios: Este archivo contiene la ubicación de los personajes, objetos, paredes y pisos. Después de cargar este archivo se podrá visualizar el escenario, posteriormente podremos hacer un test del escenario al probar o ejecutar el escenario.

3.1 DESCRIPCIÓN GRAFICA

COMPILACIÓN

CREACIÓN DE ESCENARIOS O NIVELES (A TRAVÉS DE UN ANALIZADOR O INTERFAZ GRAFICA AMIGABLE) EXPORTAR EL ESCENARIO 3.2 ARCHIVO DE CONFIGURACIÓN 3.2.1 ESTRUCTURA DE CONFIGURACIÓN

EJECUCIÓN O PRUEBA DEL VIDEOJUEGO SOBRE EL ESCENARIO CREADO

Este archivo se cargara al inicio de la aplicación, se puede cargar otros archivos para añadir 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 ñ, número o guion bajo. En caso de reconocer un elemento existente se debe mostrar un mensaje de error y eliminar el segundo elemento encontrado. Ubicación o dirección de la imagen, esta dirección estará encerrada entre comillas. Para cada elemento, pueden existir múltiples 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 posición del escenario y esta se ajustara al tamaño de la pantalla o se rellenara de algún color el espacio sobrante. En el archivo de configuración 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 héroes o villanos que aparecen en el juego que tiene diferentes atributos, para su configuración. En el archivo de configuración puede venir n-figuras de personaje, para posteriormente ser seleccionar un elemento héroe o personaje principal y n-villanos. Atributo x-vida Descripción Tipo: Entero Indicada la cantidad de vida o energía 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 podrán crear n-personajes de cualquier tipo, estos pueden ser héroes o villanos. El tipo héroe se podrá declarar más 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 héroe y tiene la función de terminar con la vida o energía del héroe, si el héroe llega a tocar al villano este perderá el nivel de vida indicado. El héroe será movilizado por el usuario y el villano se moverá automáticamente en función 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 destrucción que provocara a otro personaje sobre la energía o vida. Información o descripción de los personajes, que puede ayudar a escoger el personaje al usuario. Opcional – De no existir obtendrá un valor por defecto

x-destruir

x-descripción

<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 DISEÑO – ETIQUETA <DESIGN> Existen diferentes objetos para su configuración entre ellos:

Destrucción: Estos objetos ayudaran al héroe o personaje principal a destruir a sus enemigos (armas) como también existirán trampas (bombas) que provocarán que el pierda vida o energía. Bonus: Estos elementos darán vida o energía 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 energía deberán existir suelo, o para que sea más complicado llegar a su destino deberá existir paredes, en caso de no existir los personajes caerán perdiendo su energía 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 destrucción y bonus solo se podrán utilizar una vez luego desaparecerán, en caso de ser armas podrán ser usado el número de veces indicado por el personaje principal o héroe.

Atributo x-tipo

x-destruir

x-uso

x-alcance

x-creditos

Descripción 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 múltiples 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 héroe toca este objeto perderá vida o energía. x-arma: Este objeto ayudara al héroe a eliminar a los villanos pero contara con un número 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 destrucción que provocara a otro personaje sobre la energía 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á ningún daño. 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 MANIPULACIÓN DE ESCENARIOS 3.3.1 ESQUEMA DEL ARCHIVO DE CONFIGURACIÓN DE ESCENARIOS

Este archivo será utilizado para la creación 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(PosiciónInicial_x..PosiciónFinal_x,posición_y); Nombre_bloque(Posición_x,PosiciónInicial_y..PosiciónFinalY); Nombre_bloque(Posición_x,Posición_y); </ x-paredes> < x-extras> < x-armas> Nombre_arma(posición_x,posición_y); Nombre_arma(posición_x,posición_y); </ x-armas> < x-bonus> Nombre_bonus(posición_x,posición_y); </ x-bonus> </ x-extras> <meta> Nombre_meta(posición_x,posición_y); <meta> </ x-escenario>

3.3.2 HÉROES-VILLANOS Únicamente se podrá seleccionar un héroe o personaje principal, este podrá ser manipulado por el usuario que probara la aplicación. Se podrán seleccionar n-villanos, que al ejecutar la aplicación tendrán movimiento automático si existe suelo (bloque), en caso contrario gira y sigue caminando. En caso de que el héroe 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 también paredes que dificulten obtener fácilmente la meta. Estarán limitadas por el tamaño 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 destrucción que fue descrito en la sección 3.2.3. se pueden agregar n-objetos en cualquier posición. <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. APLICACIÓN 4.1 INTERFAZ GRAFICA
Diseñar una interfaz amigable y comodo que facilite la creación de escenarios, estos escenarios posteriormente de ser creados, se podrán exportar en un archivo de entrada y nuevamente serán cargados a través del analizador y así ver los elementos guardados.

Probar y Ejecutar Los movimientos del personaje principal o héroe como mínimo deberán poder realizar: Estas son las mínimas que se deberán usar, pero Flecha Izquierda: Izquierda

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

Villanos: Se moverá automáticamente, sobre el suelo girando automáticamente cuando ya no encuentren suelo o encuentre una pared. 4.1.1 BARRA MENÚ La aplicación deberá demostrar como mínimo los siguientes menús. Tomando en cuenta que deberá de ser totalmente gráfica.

Archivo Nuevo

Ejecutar Compilar archivo configuración

Ayuda de Manual de Usuario

Abrir

Compilar archivo de carga Manual Técnico del escenario Ejecutar/Probar el juego Errores Tabla de Símbolos Exportar Escenario Acerca de

Guardar Guardar Como Salir

La especificación 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 extensión especificada. o Salir: Con esta opción se cerrará la aplicación. Ejecutar o Compilar archivo de configuración: Compila el archivo de configuración que se encuentre abierto en el editor. o Compilar archivo de carga de escenario: Compila el archivo de configuración 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 léxicos, sintácticos y semánticos. o Tabla de Símbolos: Muestra todos los personajes y objetos creados bajo el archivo de configuración. o Exportar escenario: Escenario creado, se podrá exportar en dos archivos de texto, con la configuración 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 utilización de la aplicación. o Manual Técnico: Se deberá mostrar el manual técnico, para entender como se ha realizado la aplicación. o Acerca de: Permite mostrar información de la persona que ha creado la aplicación.

o

4.1.2 MENÚ PARA CONFIGURAR ELEMENTOS / SELECCIÓN DE ELEMENTOS: Para estos menús no existen restricciones, solo debe facilitar la creación 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 tendrán derecho a calificación. Los archivos tendrán extensión (xconf) para que la aplicación los reconozca. La realización del proyecto es individual, copias de proyecto tendrán un valor de 0(cero) y serán 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 gramática (archivos .lex, archivos .cup, archivos .bat etc.) Aplicación Java, el nombre de la aplicación debe contener el siguiente formato Proyecto1_<numero_carnet>. Archivo JAR, probado dado que no se calificara a través de ningún IDE de desarrollo. Archivos de Entrada, que sean reconocibles por su aplicación.

 

 

o Manuales de Usuario y Técnico. La Entrega será 16/09/2011, el horario de entrega y de calificación se estará informando por la Universidad Virtual.

Sign up to vote on this title
UsefulNot useful