Class DominoConfig


  • public class DominoConfig
    extends Object
    As configurações de um Jogo de dominó, ou seja, quais Jogadores vão participar (quais são seus nomes e suas classes) e quais os listeners que devem ser registrados no jogo.

    Para um Jogo acontecer, as únicas configurações obrigatórias são os nomes e as classes-ou-instâncias dos 4 jogadores. Listeners são importantes pra que se possa saber o que aconteceu no jogo (para logar, salvar ou animar uma GUI), mas não necessários.

    Um exemplo de configuração mínima é:

       import com.github.abdonia.domino.exemplos.*;
       import com.github.abdonia.domino.log.*;
       import com.github.abdonia.domino.motor.*;
    
       //......
    
       DominoConfig config =
           //cria um builder...
           new DominoConfig.Builder()
    
           //seta os jogadores da primeira dupla (dupla 0)
           .withJogador("Amanda",new JogadorAlheio(),0,0)
           .withJogador("Ana Paula",new JogadorAlheio(),0,1)
    
           //seta os jogadores da segunda dupla (dupla 1)
           .withJogador("Bruno",new JogadorMamao(),1,0)
           .withJogador("Igor",new JogadorMamao(),1,1)
    
           //opcional, mas importante, um listener que mostra o andamento do jogo.
           .withEventListener(LoggerDominoEventListener.class)
    
           //e agora, com tudo setado, cria o DomingoConfig
           .build();
    
    
       //cria um jogo com essa configuração e joga
       Jogo jogo = new Jogo(config);
    
       jogo.jogar();
     }
     

    Tanto para jogadores como para os listeners é possível escolher entre setar suas classes ou o nome qualificado de suas classes. Pra jogadores também é possível setar uma instância diretamente. Por exemplo, o jogador 0 da dupla 1 pode ser setado das seguinte maneiras:

     
       DominoConfig.Builder builder = new DominoConfig.Builder();
    
       //(1) setando como instância
       builder.withJogador(new com.acme.domino.JogadorEsperto(),0,1);
    
       //(2) setando a classe
       builder.withJogador(com.acme.domino.JogadorEsperto.class,0,1);
    
       //(3) setando o nome da classe
       builder.withJogador("com.acme.domino.JogadorEsperto",0,1);
     
     

    No caso de jogadores, ao setar uma das três opções, as outras opções (pra o mesmo jogador da mesma dupla) são automaticamente setadas pra null. Já no caso dos listeners, é possível adcionar vários, cada um usando qualquer uma das formas.

     
     //adicionando listener por classes
     builder.withEventListener(LoggerDominoEventListener.class);
    
     //adicionando listener por nome da classe
     builder.withEventListener("com.acme.domino.DBSaverEventListener");
     
     

    A instânciação da classe passada na opção (2) ou até a checagem pela existência da classe cujo nome foi passado na opção (3) Só ocorrera quando a configuração for usada pra se criar um Jogo.

    Author:
    Bruno Abdon
    • Constructor Detail

      • DominoConfig

        public DominoConfig()
    • Method Detail

      • getJogador0Dupla0

        public Jogador getJogador0Dupla0()
      • getJogador1Dupla0

        public Jogador getJogador1Dupla0()
      • getJogador0Dupla1

        public Jogador getJogador0Dupla1()
      • getJogador1Dupla1

        public Jogador getJogador1Dupla1()