Juegos de estrategia

Modelo inicial

Se desea modelar un juego de estrategia en el cual existen unidades que se pueden atacar las unas a las otras.

Al atacar una unidad a otra, se compara el potencial ofensivo del atacante con el potencial defensivo del defensor. En caso que el primero sea mayor al segundo, la unidad atacada pierde tanta energía como la diferencia entre el potencial ofensivo y el defensivo involucrados. En otro caso, no ocurre nada.

Por ejemplo, si un atacante con 30 de potencial ofensivo ataca a un defensor con 20 de potencial defensivo, este último pierde 10 de energia.

Hay tres tipos de unidades:

Problemas con Herencia Simple

Al intentar modelar este ejercicio con herencia simple, uno se encuentra con el problema de que no es posible separar en dos clases el comportamiento de Atacante y de Defensor, para luego hacer que Guerrero utilice ambos comportamientos. La herencia simple entonces no contribuye a una solución aceptable y se debe entonces buscar soluciones alternativas como composición que requieren una porción importante de glue code.

Resolución con Mixins en Ruby

Requerimiento descansar