Qué patrones de diseño se pueden usar para crear un sistema de reglas / validación para un juego como el ajedrez (este es solo un ejemplo simple, el juego real necesita conjuntos de reglas más difíciles)
He leído varias preguntas en este sitio y no he encontrado una respuesta concluyente ni una respuesta que me señale en la dirección correcta.
Este sistema requeriría lo siguiente:
- Cada objeto que tiene reglas aplicadas debe implementar una interfaz específica con un método que sea el punto de partida para la validación
- La regla debe aplicarse en 2 pasos: primero, debe validarse (el peón A puede moverse al cuadrado D4), si es verdadero, ejecute el método A si es falso, luego ejecute el método B
- Cada objeto puede tener múltiples reglas que deben aplicarse en una secuencia específica. Cuando finaliza la regla 1, la regla 2 debería comenzar a validar, etc.
- Cada regla separada (por ejemplo: solo puede moverse 1 casilla, solo puede moverse diagonalmente, etc.) debe estar en su propia clase y debe ser reutilizable y aplicable a los objetos que necesitan reglas.
- Tenga en cuenta que esto se usará en un juego multijugador en el backend
- Tenga en cuenta que cada regla necesita varios objetos para probar su validez, por ejemplo, normalmente un peón puede moverse 1 casilla, ahora la siguiente casilla en el tablero de juego se llena con un peón de su oponente. Resultado: tu peón no puede moverse. El peón debe incluir las otras posiciones de peones, o el tablero de juego en su validación.
Otra palabra para estas reglas sería límites de comportamiento.