You are on page 1of 14

FIUBA - 7507

Algoritmos y programacin 3
Trabajo prctico 3: Algo3-Man
2do cuatrimestre, 2009 (trabajo grupal) Alumnos: 87646, Mauro Ariel GOI, maurogoni@yahoo.com.ar 89743 , Brian ROISENTUL , roisentul.brian@gmail.com 88983, Emiliano PARIZZI, eparizzi@gmail.com 89631, Gaston PEREZ, gnp.gaston@gmail.com Corrector: Observaciones entrega 1:

Observaciones entrega 2:

Observaciones entrega 3:

Nota Final:

Control de cambios
Versin 0.1 Fecha Descripcin Autor 5/11/2009 Versin inicial. Definicin de la estructura Pablo Surez del documento. Versin ... [nombre del autor]

[nmero [fecha] de versin]

Algoritmos y programacin 3-TP 3: Algo3-Man 2/14

Table of Contents
Control de cambios..............................................................................................2 Introduccin.........................................................................................................4 Objetivo del trabajo..............................................................................................4 Consigna..............................................................................................................4 Modalidad de trabajo............................................................................................4 Entregables..........................................................................................................4 Supuestos............................................................................................................5 Herramientas y modo de entrega.........................................................................5 Modelo de dominio...............................................................................................5 Diagramas de clases............................................................................................5 Detalles de implementacin.................................................................................5 Excepciones.........................................................................................................5 Diagramas de secuencia......................................................................................5 Diagramas de estado...........................................................................................5 Diagramas de paquetes.......................................................................................6 Extensiones..........................................................................................................6 Concurrencia........................................................................................................6 Persistencia..........................................................................................................6 Cdigo fuente.......................................................................................................6 Checklist de correccin........................................................................................6 Carpeta................................................................................................................6 Cdigo..................................................................................................................7

Algoritmos y programacin 3-TP 3: Algo3-Man 3/14

Introduccin Objetivo del trabajo


Aplicar los conceptos enseados en la materia a la resolucin de un problema, trabajando en grupo y utilizando Java, C# o Smalltalk (a eleccin del grupo).

Consigna
El trabajo consiste en realizar una aplicacin, especficamente un juego al estilo 'Pac-Man'. Debern tenerse en cuenta las siguientes consignas: El laberinto deber poder ser variable (o sea no debe estar 'hard-coded' en el cdigo). Cada fantasma tiene sus propias caractersticas, incluyendo velocidad y estrategia para atrapar al jugador. Los fantasmas cambian su comportamiento cuando el jugador 'come' un 'punto de poder', el cual le permite atacar a los fantasmas por un tiempo limitado. La duracin del efecto del 'punto de poder' vara a medida que se avanza en nivel. La velocidad de los fantasmas vara al avanzar de nivel. Cada tanto aparecen elementos adicionales que al ser comidos por el jugador le dan puntos adicionales. Para ver mas detalles que pueden usarse como gua, ver: http://en.wikipedia.org/wiki/Pacman Alcance del trabajo: Se deber realizar el modelo, con sus diagramas correspondientes (clases, estado, secuencia y paquetes). Deber haber un conjunto abarcativo de pruebas unitarias. Se deber implementar una interfaz visual bsica. Para esto el curso proveer de herramientas que permitir el desarrollo de esta interfaz facilitando el trabajo en este aspecto de la entrega.

Modalidad de trabajo
Los alumnos se organizarn en grupos de 4. Cada grupo tendr a cargo un docente quien les guiar en cuanto a las dudas para la implementacin del trabajo y realizar la correccin del mismo.

Algoritmos y programacin 3-TP 3: Algo3-Man 4/14

Entregables
El trabajo consta de 3 entregables, los cuales se harn en etapas: Modelo de la solucin, expresada en los diagramas correspondientes. (fecha de entrega: semana del 9 de noviembre) Codificacin del modelo, con las pruebas unitarias correspondientes y los elementos del presente informe. (fecha de entrega: semana del 23 de noviembre) Implementacin de la interfaz grfica bsica. (fecha de entrega: semana del 30 de noviembre)

Supuestos
Hemos supuesto que la colisin entre los Fantasmas y Pacman lo resuelve el Fantasma. ste, dependiendo de el estado en el que se encuentra decide si se tiene que morir l o le debe decir a Pacman que debe morir. Suponemos que la cantidad de fantasmas es la del Pacman original, o sea 4.

Herramientas y modo de entrega


Se deber entregar el informe correspondiente en forma impresa y digital. La forma de entrega del cdigo de la aplicacin en s se acordar con el ayudante asignado a los grupos.

Modelo de dominio
Para comenzar, el grupo se reuni en la biblioteca de la FIUBA con el objetivo de identificar los puntos bsicos para desarrollar el tp: el lenguaje de programacin y las entidades que intervienen en la aplicacin. Una vez definidos, se cre un repositorio en el cual se crearon issues asignadas a cada integrante con el fin de dividir las tareas. A partir de este momento, el trabajo se dividi en diferentes etapas: Desarrollo del modelo de la aplicacin con sus respectivos archivos de prueba. Actualizacin de diagramas. Se incorpor el framework "titiritero", realizando los cambios pertinentes con el fin de ajustarlo a nustras necesidades. Se crearon las vistas correspondientes a las entidades del modelo. Se agregaron nuevos casos de prueba. Nueva actualizacin de diagramas.

Diagramas de clases
Algoritmos y programacin 3-TP 3: Algo3-Man 5/14

Algoritmos y programacin 3-TP 3: Algo3-Man 6/14

Algoritmos y programacin 3-TP 3: Algo3-Man 7/14

Algoritmos y programacin 3-TP 3: Algo3-Man 8/14

Algoritmos y programacin 3-TP 3: Algo3-Man 9/14

Detalles de implementacin
Queremos destacar que utilizamos el patron State para controlar los movimientos de Pacman y el cambio de estado (cazador o huidizo) de los Fantasmas, evitando asi el uso de IFs por doquier y aprovechando asi las ventajas del polimorfismo. Por otro lado utilizamos el patron Singleton, para una mejor utilizacion de la clase Juego, ya que esta debe ser llamada constantemente por varias clases del modelo para incrementar puntaje, restar vidas, etc. Nos gustara destacar las diferentes estrategias implementadas para que los fantasmas cacen al Pacman: Speedy: es el ms gil. Su estrategia se basa en perseguir a Pacman por el camino ms corto. Shadow: utiliza la misma estrategia de caza que Speedy, slo que se mueve ms lento. Bashful: se mueve acercandose a Pacman, pero cuando se encuentra relativamente cerca a l lo persigue por el segundo camino ms corto, complementndose con Speedy y Shadow, y as lograrn encerrarlo. Pokey: es el menos inteligente. Utiliza una estrategia azarosa para moverse y cazar a Pacman.

Excepciones
ArchivoInvalidoException: Es lanzada cuando se le pasa una ruta del archivo de configuracion del mapa inexistente.

Diagramas de secuencia
PacMan come una pastilla magica, la pastilla magica setea un nuevo estado en los Fantasmas (FantasmaHuidizo), que ahora huyen de Pacman para no ser comidos. Pacman se mueve hacia la posicion de un Fantasma y este reacciona ante Pacman, que como su estado era huir, provoca que se llame al metodo morir del Fantasma.

Algoritmos y programacin 3-TP 3: Algo3-Man 10/14

Pacman se mueve intentando escapar de los Fantasmas, mientras que Speedy se mueve a la posicion ms cercana a PacMan hasta que logra encontrarlo. Como el estado de los Fantasmas es de FantasmaCazador, cuando se llama al metodo ReaccionarAntePacman(), este le manda un mensaje a Pacman para que se Algoritmos y programacin 3-TP 3: Algo3-Man 11/14

muera.

Diagramas de estado

Diagramas de paquetes

Algoritmos y programacin 3-TP 3: Algo3-Man 12/14

Extensiones Concurrencia
En base a como esta construido el framework titiritero, todo el juego se simula mediante "gameloops" y cada objeto vivo actua cada cierta cantidad de "gameloops", simulando asi el efecto de que se estan moviendo al mismo tiempo. Se podria haber aplicado concurrencia para crear un thread por cada objeto vivo y lograr asi que cada objeto actue simultaneamente sin la necesidad de un contador secuencial. Esto podria traer problemas a la hora de que un objeto necesite mandarle un mensaje a otro objeto que esta en otro hilo diferente.

Persistencia
Actualmente la utilizamos tanto para cargar el mapa como para almacenar los puntajes de los jugadores. Pero tambien se podria aplicar persistencia en todos los objetos de modo tal que cierro la aplicacin por algun motivo y el dia de maana decido volver a utilizarla y tengo todos los objetos tal cual estaban antes de cerrarla.

Cdigo fuente
Acordamos con el ayudante que no se imprimir el cdigo fuente.

Checklist de correccin
Esta seccin es para uso exclusivo de la ctedra, por favor no modificar.

Carpeta
Algoritmos y programacin 3-TP 3: Algo3-Man 13/14

Generalidades Son correctos los supuestos y extensiones? Es prolija la presentacin? (hojas del mismo tamao, numeradas y con tipografa uniforme) Est completa la cartula? (nmero de grupo, nombre, mail y padrn de cada integrante) Modelo Est completo?Contempla la totalidad del problema? Respeta encapsulamiento? Respeta ocultamiento de informacin? Hace un buen uso de excepciones? Utiliza polimorfismo en las situaciones esperadas? Diagrama de clases Est completo? Est bien utilizada la notacin? Diagramas de secuencia Est completo? Es consistente con el diagrama de clases? Est bien utilizada la notacin? Diagrama de estados Est completo? Est bien utilizada la notacin? Diagrama de paquetes Est completo? Est bien utilizada la notacin?

Cdigo
Generalidades Respeta estndares de codificacin? Est correctamente documentado? Algoritmos y programacin 3-TP 3: Algo3-Man 14/14

You might also like