mt
Class Jogador

java.lang.Object
  extended by mt.Jogador
Direct Known Subclasses:
JogadorBot, JogadorBT, JogadorCPU, JogadorDummy, JogadorHumano

public abstract class Jogador
extends java.lang.Object

Base para os diversos tipos de jogador que podem participar de um jogo.

A classe Jogo se conecta em quatro instâncias desta classe para iniciar uma partida. Ela informa os eventos do jogo (ex.: uma carta foi jogada, é a vez do jogador, fim de rodada, etc.) chamando os métodos apropriados. Estes métodos devem ser encarados como mensagens, e, sempre que necessário, processados assíncronamente.

É importante notar que os métodos são acionados independente do jogador. Por exemplo, se o jogador quer jogar uma carta (chaamndo o método jogaCarta do Jogo), e a jogada é válida, todos os jogadores (inclusive quem jogou) receberão a mensagem cartaJogada().

O tipo de subclasse determina se o jogador é o usuário do celular, um jogador virtual ou um jogador de outro celular conectado remotamente.

Author:
Chester

Field Summary
(package private) static Estrategia[] ESTRATEGIAS
          Estratégias suportadas pelos jogadores automático (CPU e Bot)
protected  Jogo jogo
          Jogo que está sendo jogado por este jogador
(package private) static java.lang.String[] opcoesEstrategia
          Lista de opções de estratégia para comboboxes (tem os nomes e a última opção é a de sorteio
 
Constructor Summary
Jogador()
           
 
Method Summary
abstract  void aceitouAumentoAposta(Jogador j, int valor)
          Informa que o jogador aceitou um pedido de aumento de aposta.
abstract  void cartaJogada(Jogador j, Carta c)
          Informa que uma carta foi jogada na mesa.
static Estrategia criaEstrategiaPeloNome(java.lang.String nomeEstrategia)
          Instancia uma estratégia (para uso em jogadores que precisam disso, como o JogadorBot ou o JogadorCPU).
abstract  void decidiuMao11(Jogador j, boolean aceita)
          Informa que um jogador fez sua escolha de topar ou não uma rodada quando sua equipe tinha 11 pontos
 Carta[] getCartas()
           
 int getEquipe()
          Recupera a equipe em que este jogador está (assumindo que ele já esteja aceito em um jogo)
 int getEquipeAdversaria()
           
 java.lang.String getNome()
          Nome do jogador (em jogos multiplayer)
 int getParceiro()
          Recupera a posição do parceiro
 int getPosicao()
          Recupera a posição do jogador no jogo
abstract  void informaMao11(Carta[] cartasParceiro)
          Informa que o jogador é beneficiário de uma "mão de 11", e, portanto, deve decidir se aceita ou não esta rodada (se aceitar vale 3 pontos, se ambos recusarem perde 1)
abstract  void inicioMao()
          Informa ao jogador que uma nova mão está iniciando.
abstract  void inicioPartida()
          Informa que uma partida começou.
abstract  void jogoAbortado(int posicao)
          Informa que o jogo foi abandonado por alguma causa externa (ex.: um jogador desistiu)
abstract  void jogoFechado(int numEquipeVencedora, int[] vaquinhasNoPasto)
          Informa que o jogo foi concluído
abstract  void maoFechada(int[] pontosEquipe, int[] vaquinhasNoPasto)
          Informa que a mão foi concluída
abstract  void pediuAumentoAposta(Jogador j, int valor)
          Informa que um jogador pediu aumento de aposta (truco, seis, etc.).
 boolean possuiCarta(Carta c)
           
abstract  void recusouAumentoAposta(Jogador j)
          Informa que o jogador recusou um pedido de aumento de aposta.
abstract  void rodadaFechada(int numRodada, int resultado, Jogador jogadorQueTorna)
          Informa o jogador que a rodada foi fechada
 void setCartas(Carta[] cartas)
           
 void setNome(java.lang.String nome)
           
 void setPosicao(int posicao)
           
abstract  void vez(Jogador j, boolean podeFechada)
          Informa que é a vez de um jogador jogar.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

jogo

protected Jogo jogo
Jogo que está sendo jogado por este jogador


ESTRATEGIAS

static Estrategia[] ESTRATEGIAS
Estratégias suportadas pelos jogadores automático (CPU e Bot)


opcoesEstrategia

static java.lang.String[] opcoesEstrategia
Lista de opções de estratégia para comboboxes (tem os nomes e a última opção é a de sorteio

Constructor Detail

Jogador

public Jogador()
Method Detail

getNome

public java.lang.String getNome()
Nome do jogador (em jogos multiplayer)

Returns:

setNome

public void setNome(java.lang.String nome)

getPosicao

public int getPosicao()
Recupera a posição do jogador no jogo

Returns:
número de 1 a 4 (não necessariamente a posição dele na mesa)

setPosicao

public void setPosicao(int posicao)

getEquipe

public int getEquipe()
Recupera a equipe em que este jogador está (assumindo que ele já esteja aceito em um jogo)

Returns:
1 ou 2

getParceiro

public int getParceiro()
Recupera a posição do parceiro

Returns:
número de 1 a 4

getEquipeAdversaria

public int getEquipeAdversaria()

setCartas

public void setCartas(Carta[] cartas)

getCartas

public Carta[] getCartas()

possuiCarta

public boolean possuiCarta(Carta c)

cartaJogada

public abstract void cartaJogada(Jogador j,
                                 Carta c)
Informa que uma carta foi jogada na mesa.

Parameters:
j - Jogador que jogou a carta
c - Carta jogada

inicioMao

public abstract void inicioMao()
Informa ao jogador que uma nova mão está iniciando.

Ao receber esta mensagem, as cartas do jogador já foram atribuídas via setCartas(), e a carta virada já está disponível via getCarta().


inicioPartida

public abstract void inicioPartida()
Informa que uma partida começou. Não é obrigatório tratar - até porque o inicioMao será chamado logo em seguida.


vez

public abstract void vez(Jogador j,
                         boolean podeFechada)
Informa que é a vez de um jogador jogar.

Parameters:
j - Jogador cuja vez chegou
podeFechada - true se o jogador pode jogar carta fechada, false se não pod

pediuAumentoAposta

public abstract void pediuAumentoAposta(Jogador j,
                                        int valor)
Informa que um jogador pediu aumento de aposta (truco, seis, etc.).

Parameters:
j - Jogador que pediu o aumento
valor - Quanto a mão passará a valar se algum adversário aceitar

aceitouAumentoAposta

public abstract void aceitouAumentoAposta(Jogador j,
                                          int valor)
Informa que o jogador aceitou um pedido de aumento de aposta.

Parameters:
j - Jogador que aceitou o aumento
valor - Quanto a mão está valendo agora

recusouAumentoAposta

public abstract void recusouAumentoAposta(Jogador j)
Informa que o jogador recusou um pedido de aumento de aposta.

Obs.: isso não impede que o outro jogador da dupla aceite o pedido, é apenas para notificação visual. Se o segundo jogdor recusar o pedido, a mensagem de derrota da dupla será enviada logo em seguida.

Parameters:
j - Jogador que recusou o pedido.

rodadaFechada

public abstract void rodadaFechada(int numRodada,
                                   int resultado,
                                   Jogador jogadorQueTorna)
Informa o jogador que a rodada foi fechada

Parameters:
numRodada - 1 a 3, rodada que foi fechada
resultado - 1 se a equipe 1+3 venceu, 2 se a equipe 2+4 venceu, 3 se empatou
jogadorQueTorna - jogador que venceu a rodada (e que irá "tornar"), ou null se for empate

maoFechada

public abstract void maoFechada(int[] pontosEquipe,
                                int[] vaquinhasNoPasto)
Informa que a mão foi concluída

Parameters:
pontosEquipe - Array com os pontos da equipe 1 e 2 (índices 0 e 1)
vaquinhasNoPasto - Array com os pontos com relação ao número de partidas das equipes 1 e 2 (índices 0 e 1)

jogoFechado

public abstract void jogoFechado(int numEquipeVencedora,
                                 int[] vaquinhasNoPasto)
Informa que o jogo foi concluído

Parameters:
numEquipeVencedora - Equipe que ganhou o jogo (1 ou 2)
vaquinhasNoPasto - Array com os pontos com relação ao número de partidas das equipes 1 e 2 (índices 0 e 1)

decidiuMao11

public abstract void decidiuMao11(Jogador j,
                                  boolean aceita)
Informa que um jogador fez sua escolha de topar ou não uma rodada quando sua equipe tinha 11 pontos

Parameters:
j - Jogador que fez a escolha
aceita - true se o jogador topou, false se recusou

informaMao11

public abstract void informaMao11(Carta[] cartasParceiro)
Informa que o jogador é beneficiário de uma "mão de 11", e, portanto, deve decidir se aceita ou não esta rodada (se aceitar vale 3 pontos, se ambos recusarem perde 1)

Parameters:
cartasParceiro - Cartas do parceiro
See Also:
Jogo.decideMao11(Jogador, boolean)

jogoAbortado

public abstract void jogoAbortado(int posicao)
Informa que o jogo foi abandonado por alguma causa externa (ex.: um jogador desistiu)

Parameters:
posicao - Posição do jogador que abortou

criaEstrategiaPeloNome

public static Estrategia criaEstrategiaPeloNome(java.lang.String nomeEstrategia)
Instancia uma estratégia (para uso em jogadores que precisam disso, como o JogadorBot ou o JogadorCPU).

Parameters:
nomeEstrategia - Nome da estratégia (ex.: "Willian"). Se nenhuma estratégia se identificar por aquele nome, sorteia uma aleatória
Returns:
nova instância da estratégia