Class DominoConfig
- java.lang.Object
-
- com.github.abdonia.domino.motor.DominoConfig
-
public class DominoConfig extends Object
As configurações de um Jogo de dominó, ou seja, quaisJogadores
vão participar (quais são seus nomes e suas classes) e quais oslisteners
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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DominoConfig.Builder
Um builder de instâncias deDominoConfig
.
-
Constructor Summary
Constructors Constructor Description DominoConfig()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<DominoEventListener>
getEventListeners()
Jogador
getJogador0Dupla0()
Jogador
getJogador0Dupla1()
Jogador
getJogador1Dupla0()
Jogador
getJogador1Dupla1()
-