Proyecto de la asignatura Diseño de Software del curso 24-25 El proyecto consiste en diseñar e implementar la lógica de un juego basado en un laberinto La idea del proyecto está tomada de los ejemplos que aparecen en el libro "Design Patterns: Elements of Reusable Object-Oriented Programming", utilizados para ilustrar los patrones de creación.
Este curso 24-25 utilizaremos los asistentes de AI disponibles. Cada alumno podrá usar el que desee. En este proyecto se utiliza Cline en VSCode con Geimini
El primer patrón implementado es el Factory Method. A continuación, se muestra el diagrama de clases.
Con este patrón podemos agregar responsabilidades nuevas (Bomba) a otros objetos (Pared, Puerta...).

El Strategy encapsula familias de algoritmos como objetos. En nuestra solución lo aplicamos para encapsular el modo (Agresivo, Perezoso) de los bichos.

Este patrón se utiliza para representar estructuras recursivas todo-parte. Simplifica a los clientes porque pueden tratar de manera uniforme a compuestos y hojas. En el caso del proyecto del juego del laberinto, el Composite lo forman ElementoMapa (Component), Contenedor (Composite) y Hoja (Leaf).
Utilizamos un iterador interno que es adecuado para estructuras tipo Composite. El iterador interno se implementa con la operación recorrer(unBloque). El parámetro unBloque es una función anónima.
En esta solución, aplicamos el Singleton a las orientaciones
El método actua de Modo es un Template Method. Las operaciones primitivas son: dormir, caminar y atacar.
Aplicamos el patrón Builder para crear laberintos a partir de un archivo JSON. El participante Director lee el archivo e interpreta el archivo JSON para ir creando cada una de las partes del juego.

El patrón State permite alterar su comportamiento cuando cambia de estado. Encapsula los estados de un objeto como objetos. Aplicamos el patrón State a los estados de Puerta (abierta o cerrada) y también a los estados de Ente (Vivo o Muerto).

El patrón Command encapsula una petición como un objeto. Aplicamos el patrón Command a las peticiones abrir, entrar y cerrar de Puerta y activar de Bomba.



