He estado tratando de hacer un reproductor de IA para el popular juego de cartas, Dominion (http://www.boardgamegeek.com/boardgame/36218/dominion).Estructura correcta de OOP para un jugador de Dominion AI
Si no está familiarizado con el juego, básicamente es un primo muy simplificado de Magic: The Gathering, donde hay una gran biblioteca de cartas con diferentes reglas sobre ellas. En el transcurso de un juego, los jugadores compran estas cartas y las incorporan a su mazo.
Me interesa este juego desde una perspectiva de aprendizaje automático: quiero enfrentar a bots entre sí, hacer que jueguen millones de juegos y tratar de extraer información que los haga jugar mejor.
No estoy seguro de cómo separar las reglas del juego (las instrucciones literales impresas en cada carta) de la lógica central de toma de decisiones de AI.
El camino obvio que he comenzado es crear una clase para cada tarjeta, y poner ambas reglas y cosas de AI en el mismo lugar. Esto es algo asqueroso, pero parece ser el camino de menor resistencia. Pero tal vez sea mejor que cada tarjeta admita algún tipo de interfaz y luego tenga un código de componentes AI contra estas.
¿Hay un diseño OOP "correcto" para esto? O varias posibilidades razonables?
Cuando dice "... está creando una clase para cada Tarjeta, y ... ", ¿te refieres a una Tarjeta de clase con múltiples instancias o literalmente múltiples clases, una para cada tarjeta? – Sagar