Quais padrões de design podem ser usados para criar um sistema de regras / validação para um jogo como o xadrez (este é apenas um exemplo simples, o jogo real precisa de conjuntos de regras mais difíceis)
Eu li várias perguntas neste site e não encontrei uma resposta conclusiva nem uma resposta que me aponte na direção certa.
Este sistema exigiria o seguinte:
- Todo objeto que possui regras aplicadas deve implementar uma interface específica com um método que seja o ponto de partida para a validação.
- A regra deve ser aplicada em 2 etapas: primeiro, ela precisa ser validada (pode penhorar A passar para o quadrado D4); se for verdade, execute o método A se for falso; em seguida, execute o método B
- Todo objeto pode ter várias regras que precisam ser aplicadas em uma sequência específica. Quando a regra 1 é concluída, a regra 2 deve começar a validar etc.
- Cada regra separada (por exemplo: só pode mover 1 quadrado, somente na diagonal etc) deve estar em sua própria classe e deve ser reutilizável e aplicável aos objetos que precisam de regras.
- Observe que isso será usado em um jogo multiplayer no back-end
- Observe que todas as regras precisam de vários objetos para testar sua validade; por exemplo, normalmente um peão pode se mover 1 quadrado, agora o próximo quadrado no tabuleiro é preenchido por um peão do seu oponente. Resultado: seu peão não pode se mover. O peão deve incluir as outras posições dos peões ou o tabuleiro de jogo em sua validação.
Outra palavra para essas regras seria limites comportamentais.