mt
Class JogoBT

java.lang.Object
  extended by mt.Jogo
      extended by mt.JogoBT
All Implemented Interfaces:
java.lang.Runnable

public class JogoBT
extends Jogo

Representa, no cliente, o Jogo que está executando no servidor.

De maneira análoga à JogadorBT, ela converte as notificações do jogador local em mensagens de texto (enviando-as ao servidor) e recebe mensagens de texto do servidor, transformando-as em notificações para o jogador local.

A conexão é gerenciada por ClienteBT, já que uma conexão pode ser usada em jogos sucessivos.

Author:
chester

Field Summary
 
Fields inherited from class mt.Jogo
cartaDaMesa, cartasJogadasPorRodada, jogoFinalizado, letrasOrdenadas, log, modoCE, numJogadores, numRodadaAtual, pontosEquipe, vaquinhasNoPasto
 
Constructor Summary
JogoBT(ClienteBT clienteBT)
          Cria um novo proxy de jogo remoto associado a um cliente
 
Method Summary
 void atualizaSituacao(SituacaoJogo s, Jogador j)
          Não implementado em jogo bluetooth (apenas o JogadorCPU usa isso, e ele não participa desses jogos).
 void aumentaAposta(Jogador j)
          Informa que o jogador solicitou um aumento de aposta ("truco", "seis", etc.).
 void decideMao11(Jogador j, boolean aceita)
          Informa ao jogo o resultado de aceite daquela mão de 11
 void enviaLinha(java.lang.String linha)
          Manda um comando para o celular do servidor.
 JogadorHumano getJogadorHumano()
          Retorna o jogador humano que está no jogo
 boolean isBaralhoLimpo()
           
 boolean isManilhaVelha()
           
 void jogaCarta(Jogador j, Carta c)
          Informa que o jogador vai descartar aquela carta.
 void processaNotificacao(char tipoNotificacao, java.lang.String parametros)
          Processa uma notificação "in-game", gerando o evento apropriado no jogador humano
 void respondeAumento(Jogador j, boolean aceitou)
          Informa que o jogador respondeu a um pedido de aumento de aposta
 void run()
          Inicia o jogo.
 
Methods inherited from class mt.Jogo
abortaJogo, adiciona, getCartasDaRodada, getJogador, getManilha, getValorTruco, getValorTruco, isAlguemTem11Pontos, log, setManilha
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JogoBT

public JogoBT(ClienteBT clienteBT)
Cria um novo proxy de jogo remoto associado a um cliente

Parameters:
clienteBT - Cliente que se conectou no jogo remoto
Method Detail

getJogadorHumano

public JogadorHumano getJogadorHumano()
Retorna o jogador humano que está no jogo

Returns:
objeto que representa o humano

processaNotificacao

public void processaNotificacao(char tipoNotificacao,
                                java.lang.String parametros)
Processa uma notificação "in-game", gerando o evento apropriado no jogador humano

Parameters:
tipoNotificacao - caractere identificador
parametros - dependem do caractere

atualizaSituacao

public void atualizaSituacao(SituacaoJogo s,
                             Jogador j)
Não implementado em jogo bluetooth (apenas o JogadorCPU usa isso, e ele não participa desses jogos).

Specified by:
atualizaSituacao in class Jogo
Parameters:
s - objeto a atualizar
j - Jogador que receberá a situação

isBaralhoLimpo

public boolean isBaralhoLimpo()
Specified by:
isBaralhoLimpo in class Jogo
Returns:
True para jogo sem os 4,5,6 e 7.

isManilhaVelha

public boolean isManilhaVelha()
Specified by:
isManilhaVelha in class Jogo
Returns:
True para manilhas fixas (sem "vira")

run

public void run()
Description copied from class: Jogo
Inicia o jogo.

O jogo deve ser inicializado numa thread separada da principal, desta forma é mais conveniente que ele seja o Runnable desta thread, daí o nome do método.

Specified by:
run in interface java.lang.Runnable
Specified by:
run in class Jogo

enviaLinha

public void enviaLinha(java.lang.String linha)
Manda um comando para o celular do servidor.

Este comando é originado de alguma ação do JogadorCPU local (jogar uma carta, pedir truco, etc.).

Parameters:
linha -

jogaCarta

public void jogaCarta(Jogador j,
                      Carta c)
Description copied from class: Jogo
Informa que o jogador vai descartar aquela carta.

Tem que ser a vez dele e não pode haver ninguém trucando.

A rotina não verifica se o jogador realmente possuía aquela carta - assume-se que as instâncias de Jogador são honestas e se protegem de clientes remotos desonestos

Specified by:
jogaCarta in class Jogo

decideMao11

public void decideMao11(Jogador j,
                        boolean aceita)
Description copied from class: Jogo
Informa ao jogo o resultado de aceite daquela mão de 11

Specified by:
decideMao11 in class Jogo
Parameters:
j - Jogador que está respondendo
aceita - true se o jogador topa jogar, false se deixar para o parceiro decidir

aumentaAposta

public void aumentaAposta(Jogador j)
Description copied from class: Jogo
Informa que o jogador solicitou um aumento de aposta ("truco", "seis", etc.).

Os jogadores são notificados, e a aposta será efetivamente aumentada se um dos adversários responder positivamente.

Observe-se que a vez do jogador fica "suspensa", já que lançamentos de cartas só são aceitos se não houver ninguém trucando. Como o jogador atualmente só pode trucar na sua vez, isso não é problema.

Specified by:
aumentaAposta in class Jogo
Parameters:
j - Jogador que está solicitando o aumento

respondeAumento

public void respondeAumento(Jogador j,
                            boolean aceitou)
Description copied from class: Jogo
Informa que o jogador respondeu a um pedido de aumento de aposta

Specified by:
respondeAumento in class Jogo
Parameters:
j - Jogador que respondeu ao pedido
aceitou - true se ele mandou descer, false se correu