mt
Class JogoTCP

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

public class JogoTCP
extends Jogo

Jogo online no qual o usuário celular está conectado e jogando.

A classe atua como um proxy da classe JogoLocal que está efetivamente rodando no servidor. Ela transforma as chamadas de métodos em comandos remotos.

Das notificações recebidas, parte é usada para popular coleções locais (ex.: as cartas da mesa, que podem ser solicitadas pelo jogador), e parte é convertida em chamadas aos objetos Jogador.

Author:
Chester

Field Summary
 
Fields inherited from class mt.Jogo
cartasJogadasPorRodada, jogoFinalizado, letrasOrdenadas, log, modoCE, numJogadores, numRodadaAtual, pontosEquipe, vaquinhasNoPasto
 
Constructor Summary
JogoTCP(ServidorTCP servidor)
           
 
Method Summary
 void abortaJogo(int posicao)
          Faz o jogador abortar o jogo atual
 void atualizaSituacao(SituacaoJogo s, Jogador j)
          Não implementado em jogo remoto (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
 Carta getCartaDaMesa()
           
 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
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

JogoTCP

public JogoTCP(ServidorTCP servidor)
Method Detail

abortaJogo

public void abortaJogo(int posicao)
Faz o jogador abortar o jogo atual

Overrides:
abortaJogo in class Jogo
Parameters:
posicao - posição (1 a 4) do jogador que motivou o abort

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

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

getCartaDaMesa

public Carta getCartaDaMesa()

atualizaSituacao

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

Se no futuro quisermos ter bots locais em jogos online, uma idéia seria mover a implementação em JogoLocal para Jogo, fazendo os ajustes necessários.

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")

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
See Also:
protocolo.txt

getJogadorHumano

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

Returns:
objeto que representa o humano