ATON Presentación del diseño del juego de mesa Aton.

14
ATON Presentación del diseño del juego de mesa Aton

Transcript of ATON Presentación del diseño del juego de mesa Aton.

Page 1: ATON Presentación del diseño del juego de mesa Aton.

ATON

Presentación del diseño del juego de mesa Aton

Page 2: ATON Presentación del diseño del juego de mesa Aton.

Introducción

• En esta presentación queremos exponer los diferentes problemas de diseño de software que hemos encontrado en la realización del diseño del juego de mesa Aton así como las soluciones que hemos aplicado.

Page 3: ATON Presentación del diseño del juego de mesa Aton.

Eliminación Clase Tablero

• Problema: El problema que existía era que la clase tablero no hacía nada. Por lo que corresponde al mal olor “intermediario”.

• Solución: Eliminamos la clase Tablero y movimos los 2 atributos que tenía a la Clase Partida, ya que las partes del tablero pueden introducirse dentro del concepto de partida.

Page 4: ATON Presentación del diseño del juego de mesa Aton.

Interfaz de usuario (I)

• Problema: como establecer la comunicación de los jugadores con el juego.

• Solución: aplicando el patrón Fachada creamos una clase que servirá de unión entre los usuarios del software y el diseño interno del mismo.

Page 5: ATON Presentación del diseño del juego de mesa Aton.

Interfaz de usuario (I)

Page 6: ATON Presentación del diseño del juego de mesa Aton.

Interfaz de usuario (II)

• Problema: El problema que teníamos era que habíamos creado directamente la clase “interfazdeUsuario” sin haber definido antes una interfaz.

• Solución: Creamos la interfaz “interfazdeUsuario” la cual estaba implementada por la clase “interfazdeUsuarioConsola” y de esta manera podemos posteriormente crear nuevas clases que implementen esta interfaz y obtener así otro tipo de interfaz ( por ejemplo una interfaz gráfica )

Page 7: ATON Presentación del diseño del juego de mesa Aton.

Interfaz de usuario (II)

Page 8: ATON Presentación del diseño del juego de mesa Aton.

Asignar el ganador de una partida (I)• Atributo “ganador” de tipo Color en partida• Cuando un jugador gana, le da su color al atributo ganador• Mientras Ganador sea Color.SinColor se sigue jugando.

Page 9: ATON Presentación del diseño del juego de mesa Aton.

Asignar el ganador de una partida (II)• Una partida puede terminar en empate• Hay diferentes condiciones de victoria

Page 10: ATON Presentación del diseño del juego de mesa Aton.

Cambio en el diseño de los tipos de Casilla(I)

• Problema: Mal olor “Clases perezosas” en las clases de tipo de casillas.

• Primera solución: crear una clase Casilla de la que hereden tantas clases como tipos de casillas haya.

• Solución definitiva: Cambiamos las distintas clases de tipo casilla por un tipo enumerado Mejor solución a la hora de querer añadir una nueva casilla.

Page 11: ATON Presentación del diseño del juego de mesa Aton.

Templos

• Problema: Hay cuatro templos con partes iguales y un método con una implementación distinta para cada uno (getPuntos)

• Solución: Patrón de Diseño Estrategia

Page 12: ATON Presentación del diseño del juego de mesa Aton.

Conjuntos de cartas (I).

• Problema: Atributo Collection<Cartas> en clase Jugador Mal olor Clase grande ( se encarga de operaciones de creación y manipulación de atributos Poca cohesión)

• Solución: Creamos una clase conjunto de cartas. Cada jugador tendrá (baraja de Baraja, descartes de ConjuntoDeCartas y mano de cada ronda de ConjuntoDeCartas)

• Diferencia de la baraja vs descartes y mano: La baraja de cartas será un conjunto especial ya que puede ser barajada.

• Clase baraja extiende a conjunto de cartas.• Cuando una baraja esté vacía se genera una nueva barajando el

montón de descartes.

Page 13: ATON Presentación del diseño del juego de mesa Aton.

Conjunto de Cartas (II)

Page 14: ATON Presentación del diseño del juego de mesa Aton.

Post Morten

• Objetivos conseguidos

• Implementación completa y funcional del juego

• Uso de patrones de diseño

• Solución de todos los problemas de diseño encontrados

• Objetivos no conseguidos

• Interfaz gráfica

• Uso de patrón de diseño Fábrica Abstracta

• Implementación de extensiones