How brunoabdon/domino works
domino é um jogo de programação: o usuário inicia a aplicação, que carrega jogadores e listeners, cria um jogo e executa partidas entre quatro IAs. Cada partida distribui pedras, consulta jogadores, valida jogadas na mesa, calcula batidas ou empate e atualiza o placar até uma dupla vencer. O motor também transmite eventos para logging e outras UIs. A arquitetura abaixo combina contratos de domínio, orquestração, configuração e observabilidade; alguns vínculos internos foram omitidos por os fontes não terem sido amostrados.
Main entry points: Jogo.java Orquestrador Jogo · Partida.java Motor Partida · DominoEventBroadcaster.java Despachante Eventos · DominoApp.java Aplicação Domino
Components 21
Entrada e Configuração
- Aplicação Domino
src/main/java/com/github/abdonia/domino/app/DominoApp.java - Leitor YAML
src/main/java/com/github/abdonia/domino/app/DominoYAMLConfigLoader.java - Configuração Domino
src/main/java/com/github/abdonia/domino/motor/DominoConfig.java
Motor do Jogo
- Orquestrador Jogo
src/main/java/com/github/abdonia/domino/motor/Jogo.java - Motor Partida
src/main/java/com/github/abdonia/domino/motor/Partida.java - Sorteio Aleatório
src/main/java/com/github/abdonia/domino/motor/DefaultRandomGoddess.java - Adaptador Jogador
src/main/java/com/github/abdonia/domino/motor/JogadorWrapper.java
Domínio e Estado
- Mesa em Jogo
src/main/java/com/github/abdonia/domino/motor/MesaImpl.java - Contrato Mesa
src/main/java/com/github/abdonia/domino/Mesa.java - Pedras Dominó
src/main/java/com/github/abdonia/domino/Pedra.java - Jogadas
src/main/java/com/github/abdonia/domino/Jogada.java - Tipos Vitória
src/main/java/com/github/abdonia/domino/Vitoria.java - Resultado Partida
src/main/java/com/github/abdonia/domino/motor/ResultadoPartida.java - Placar Duplas
src/main/java/com/github/abdonia/domino/motor/Dupla.java
Jogadores
- Contrato Jogador
src/main/java/com/github/abdonia/domino/Jogador.java - IAs de Exemplo
src/main/java/com/github/abdonia/domino/exemplos/JogadorSimplorio.java
Eventos e Logging
- Despachante Eventos
src/main/java/com/github/abdonia/domino/motor/DominoEventBroadcaster.java - Contrato Eventos
src/main/java/com/github/abdonia/domino/eventos/DominoEventListener.java - Eventos Oniscientes
src/main/java/com/github/abdonia/domino/eventos/OmniscientDominoEventListener.java - Logger de Eventos
src/main/java/com/github/abdonia/domino/log/LoggerDominoEventListener.java
Other components
- Usuário Terminal
Connections 23
- Usuário Terminal → Aplicação Domino: inicia aplicação
- Aplicação Domino → Leitor YAML: carrega configuração
- Leitor YAML → Configuração Domino: produz configuração
- Aplicação Domino → Orquestrador Jogo: cria jogo
- Orquestrador Jogo → Mesa em Jogo: cria mesa
- Orquestrador Jogo → Motor Partida: executa partidas
- Orquestrador Jogo → Sorteio Aleatório: sorteia decisões
- Orquestrador Jogo → Placar Duplas: atualiza placar
- Motor Partida → Adaptador Jogador: consulta jogador
- Adaptador Jogador → Contrato Jogador: invoca jogador
- IAs de Exemplo → Contrato Mesa: lê estado
- IAs de Exemplo → Jogadas: cria jogada
- Motor Partida → Mesa em Jogo: valida jogada
- Motor Partida → Tipos Vitória: classifica batida
- Motor Partida → Resultado Partida: produz resultado
- Orquestrador Jogo → Resultado Partida: consome resultado
- Orquestrador Jogo → Despachante Eventos: emite eventos
- Motor Partida → Despachante Eventos: emite eventos
- Despachante Eventos → Contrato Eventos: despacha eventos
- Despachante Eventos → Eventos Oniscientes: despacha detalhes
- Logger de Eventos → Eventos Oniscientes: implementa contrato
- Despachante Eventos → Logger de Eventos: notifica logger
- Configuração Domino → Orquestrador Jogo: configura jogo