Table |
A principal função da classe Table é mediar o jogo. Ela é responsável por distribuir as peças, determinar quem joga, receber as peças descartadas, calcular a pontuação e encerrar o jogo. Portanto ela funciona como um se fosse um juiz.
Além disso, a classe Table também é responsável por enviar notificações à interface sempre que ocorre uma mudança no panorama do jogo. |
Player |
A classe abstrata Player representa um jogador que tem a responsabilidade de decidir qual peça será descartada e de como aproveitar o descarte dos outros jogadores. Essa classe é especializada em duas sub-classes: RealPlayer e VirtualPlayer.
A classe RealPlayer representa usuário e deixa a cargo deste a tomada das decisões.
A classe VirtualPlayer delega as responsabilidades a classe Intelligente.
|
Intelligence |
Intelligence é a super-classe das classes que representam a inteligência artificial dos jogadores virtuais. A princípio existem três níveis de inteligência, Júnior, Normal e Master, onde é crescente a dificuldade encontrada pelo jogador real. |
Result |
A classe Result armazena o resultado da rododa corrente. A princípio o resultado está sempre vazioe no momento que um dos jogadores alcançar uma batida o resultado é preenchido com todos os tipos de batida conseguidos pelo jogador. No momento que o resultado é preenchido a mesa (Table) percebe e encerra a rodada fazendo o cálculo dos pontos a partir do conteúdo do resultado. |
Analyser |
A cada jogada a classe Analyser consulta a mão de cada jogador e testa todos os tipos de batida com a intençao de saber se alguém bateu. Quando a mão de um dos jogadores satisfaz a uma das batidas o resultado (Result) é preenchido com aquele tipo de batida. |
ImageServer |
Carrega as imagens e as torna disponíveis às requisições da classe GameInterface. |
GameInterface |
Espera por notificações da classe Table e atualiza a tela de acordo com o tipo de notificação. |
DrawDialog |
Apresenta ao usuário quais operações ele pode fazer com uma peça comprada por ele. |
DiscardDialog |
Apresenta ao usuário quais operações ele pode fazer com uma peça descartada por outro jogador. |
FinishedHandDialog |
Apresenta ao usuário a batida e os pontos no final de cada rodada. |
PlayerPanel |
É responsável por apresentar a mão de cada um dos jogadores. Ela é especializada para cada um dos jogadores. |
CenterPanel |
Mostra informações gerais sobre a rodada, tais como jogador atual, doras, número restante de peças, rodada atual. |