mt
Class JogadorBT

java.lang.Object
  extended by mt.Jogador
      extended by mt.JogadorBT
All Implemented Interfaces:
java.lang.Runnable

public class JogadorBT
extends Jogador
implements java.lang.Runnable

Representa o jogador conectado em um servidor bluetooth.

Ele converte as notificações do jogo local em mensagens de texto (enviando-as para o cliente) e converte as mensagens de texto vindas do cliente em notificações para o jogo local.

A ida é feita através do ServidorBT (que detém a conexão e os outputstreams), mas a volta é feita por um InputStream local, criado só para isso.

Desta forma, objeto "vive" enquanto este InputStream local estiver aberto, mas a conexão/saída ficam disponíveis para novas partidas com o mesmo cliente. que não é gerado por esta classe, pois ocorre antes do

Author:
chester

Field Summary
(package private)  java.io.InputStream in
          Inputstream do jogador conectado
 
Fields inherited from class mt.Jogador
ESTRATEGIAS, jogo, opcoesEstrategia
 
Constructor Summary
JogadorBT(ServidorBT servidor)
          Cria uma instância que representa um jogador conectado no servidor via Bluetooth
 
Method Summary
 void aceitouAumentoAposta(Jogador j, int valor)
          Informa que o jogador aceitou um pedido de aumento de aposta.
 void cartaJogada(Jogador j, Carta c)
          Informa que uma carta foi jogada na mesa.
 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
 void enviaMensagem(java.lang.String linha)
          Manda uma linha de texto para o celular do cliente.
(package private)  void finaliza()
          Encerra a thread principal, efetivamente finalizando o JogadorBT
 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)
 void inicioMao()
          Informa ao jogador que uma nova mão está iniciando.
 void inicioPartida()
          Informa que uma partida começou.
 void jogoAbortado(int posicao)
          Informa que o jogo foi abandonado por alguma causa externa (ex.: um jogador desistiu)
 void jogoFechado(int numEquipeVencedora, int[] vaquinhasNoPasto)
          Informa que o jogo foi concluído
 void maoFechada(int[] pontosEquipe, int[] vaquinhasNoPasto)
          Informa que a mão foi concluída
 void pediuAumentoAposta(Jogador j, int valor)
          Informa que um jogador pediu aumento de aposta (truco, seis, etc.).
 void recusouAumentoAposta(Jogador j)
          Informa que o jogador recusou um pedido de aumento de aposta.
 void rodadaFechada(int numRodada, int resultado, Jogador jogadorQueTorna)
          Informa o jogador que a rodada foi fechada
 void run()
          Processa as mensagens vindas do cliente (i.e., do JogoBT no celular remoto), transformando-as novamente em eventos no Jogo local
 void vez(Jogador j, boolean podeFechada)
          Informa que é a vez de um jogador jogar.
 
Methods inherited from class mt.Jogador
criaEstrategiaPeloNome, getCartas, getEquipe, getEquipeAdversaria, getNome, getParceiro, getPosicao, possuiCarta, setCartas, setNome, setPosicao
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

in

java.io.InputStream in
Inputstream do jogador conectado

Constructor Detail

JogadorBT

public JogadorBT(ServidorBT servidor)
Cria uma instância que representa um jogador conectado no servidor via Bluetooth

Parameters:
servidor - Servidor que fará o meio-de-campo
Method Detail

run

public void run()
Processa as mensagens vindas do cliente (i.e., do JogoBT no celular remoto), transformando-as novamente em eventos no Jogo local

Specified by:
run in interface java.lang.Runnable

finaliza

void finaliza()
Encerra a thread principal, efetivamente finalizando o JogadorBT


enviaMensagem

public void enviaMensagem(java.lang.String linha)
Manda uma linha de texto para o celular do cliente.

Estas linhas representam eventos gerados pelo JogoLocal.

Parameters:
linha -

cartaJogada

public void cartaJogada(Jogador j,
                        Carta c)
Description copied from class: Jogador
Informa que uma carta foi jogada na mesa.

Specified by:
cartaJogada in class Jogador
Parameters:
j - Jogador que jogou a carta
c - Carta jogada

inicioMao

public void inicioMao()
Description copied from class: Jogador
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().

Specified by:
inicioMao in class Jogador

inicioPartida

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

Specified by:
inicioPartida in class Jogador

vez

public void vez(Jogador j,
                boolean podeFechada)
Description copied from class: Jogador
Informa que é a vez de um jogador jogar.

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

pediuAumentoAposta

public void pediuAumentoAposta(Jogador j,
                               int valor)
Description copied from class: Jogador
Informa que um jogador pediu aumento de aposta (truco, seis, etc.).

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

aceitouAumentoAposta

public void aceitouAumentoAposta(Jogador j,
                                 int valor)
Description copied from class: Jogador
Informa que o jogador aceitou um pedido de aumento de aposta.

Specified by:
aceitouAumentoAposta in class Jogador
Parameters:
j - Jogador que aceitou o aumento
valor - Quanto a mão está valendo agora

recusouAumentoAposta

public void recusouAumentoAposta(Jogador j)
Description copied from class: Jogador
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.

Specified by:
recusouAumentoAposta in class Jogador
Parameters:
j - Jogador que recusou o pedido.

rodadaFechada

public void rodadaFechada(int numRodada,
                          int resultado,
                          Jogador jogadorQueTorna)
Description copied from class: Jogador
Informa o jogador que a rodada foi fechada

Specified by:
rodadaFechada in class Jogador
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 void maoFechada(int[] pontosEquipe,
                       int[] vaquinhasNoPasto)
Description copied from class: Jogador
Informa que a mão foi concluída

Specified by:
maoFechada in class Jogador
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)

decidiuMao11

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

Specified by:
decidiuMao11 in class Jogador
Parameters:
j - Jogador que fez a escolha
aceita - true se o jogador topou, false se recusou

informaMao11

public void informaMao11(Carta[] cartasParceiro)
Description copied from class: Jogador
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)

Specified by:
informaMao11 in class Jogador
Parameters:
cartasParceiro - Cartas do parceiro
See Also:
Jogo.decideMao11(Jogador, boolean)

jogoFechado

public void jogoFechado(int numEquipeVencedora,
                        int[] vaquinhasNoPasto)
Description copied from class: Jogador
Informa que o jogo foi concluído

Specified by:
jogoFechado in class Jogador
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)

jogoAbortado

public void jogoAbortado(int posicao)
Description copied from class: Jogador
Informa que o jogo foi abandonado por alguma causa externa (ex.: um jogador desistiu)

Specified by:
jogoAbortado in class Jogador
Parameters:
posicao - Posição do jogador que abortou