|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object mt.Jogo
public abstract class Jogo
Jogo em andamento (independente de estar rodando local ou remotamente).
As implementações desta classe irão cuidar de executar o jogo (no caso de
JogoLocal
) ou manter a comunicação com um jogo em execução
remota (JogoRemoto
). Em qualquer caso, os objetos Jogador
não terão ciência de onde o jogo está se passando.
A classe também faz o log (para fins de debug). Idealmente haveria uma classe para isso, mas economizamos uns Ks deixando aqui (não pode ser na classe principal porque esta depende das classes MIDP, que o servidor não tem).
JogoLocal
Field Summary | |
---|---|
Carta |
cartaDaMesa
Carta que determina a manilha (em jogo que não usa manilha velha) |
protected Carta[][] |
cartasJogadasPorRodada
Guarda quais cartas foram jogadas em cada rodada. |
protected boolean |
jogoFinalizado
Indica que o jogo foi finalizado (para evitar que os jogadoresCPU fiquem "rodando em falso" caso o jogo seja abortado |
protected static java.lang.String |
letrasOrdenadas
Referência para determinar a ordem das cartas no truco |
static java.lang.String[] |
log
Log rotativo (para exibir na tela do celular) |
protected boolean |
modoCE
Sinalizador do modo confronto de estratégias |
protected int |
numJogadores
Número de jogadores adicionados até agora |
(package private) int |
numRodadaAtual
Rodada que estamos jogando (de 1 a 3). |
protected int[] |
pontosEquipe
Pontos de cada equipe na partida. |
protected int[] |
vaquinhasNoPasto
Número de vaquinhas no pasto de cada equipe. |
Constructor Summary | |
---|---|
Jogo()
|
Method Summary | |
---|---|
void |
abortaJogo(int posicao)
Indica que o jogo foi finalizado por iniciativa do jogador naquela posição. |
boolean |
adiciona(Jogador j)
Adiiciona um jogador na próxima posição disponível |
abstract void |
atualizaSituacao(SituacaoJogo s,
Jogador j)
Atualiza um objeto que contém a situação do jogo (exceto pelas cartas do jogador) |
abstract void |
aumentaAposta(Jogador j)
Informa que o jogador solicitou um aumento de aposta ("truco", "seis", etc.). |
abstract void |
decideMao11(Jogador j,
boolean aceita)
Informa ao jogo o resultado de aceite daquela mão de 11 |
Carta[] |
getCartasDaRodada(int rodada)
Retorna as cartas jogadas por cada jogador naquela rodada |
protected Jogador |
getJogador(int posicao)
Recupera um jogador inscrito |
char |
getManilha()
|
protected int |
getValorTruco(Carta c)
|
static int |
getValorTruco(Carta c,
char letraManilha)
Recupera um valor relativo para a carta, considerando as manilhas em jogo Este método está na superclasse porque, no início da rodada, toda a informação necessária consiste na manilha e em sua regra, e essas já foram transmitidas, evitando assim, dúzias de comandos. |
boolean |
isAlguemTem11Pontos()
Informa se alguma das equipes tem 11 pontos (para fins de permitir trucar) Isso não tem a ver com a "mão de 11" - aquela em que uma das equipes apenas tem 11. |
abstract boolean |
isBaralhoLimpo()
|
abstract boolean |
isManilhaVelha()
|
abstract void |
jogaCarta(Jogador j,
Carta c)
Informa que o jogador vai descartar aquela carta. |
static void |
log(java.lang.String string)
Método usado para debug (permite acompanhar o jogo no console) |
abstract void |
respondeAumento(Jogador j,
boolean aceitou)
Informa que o jogador respondeu a um pedido de aumento de aposta |
abstract void |
run()
Inicia o jogo. |
void |
setManilha(Carta c)
Determina a letra da manilha, baseado na carta virada (o "vira"). |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final java.lang.String letrasOrdenadas
int numRodadaAtual
(as implementações devem manter atualizado)
protected int numJogadores
protected Carta[][] cartasJogadasPorRodada
(as implementações devem alimentar este array)
public Carta cartaDaMesa
protected int[] pontosEquipe
As implementações devem atualizar (para se saber quando é mão de 11)
protected int[] vaquinhasNoPasto
protected boolean modoCE
protected boolean jogoFinalizado
public static java.lang.String[] log
Constructor Detail |
---|
public Jogo()
Method Detail |
---|
public static int getValorTruco(Carta c, char letraManilha)
Este método está na superclasse porque, no início da rodada, toda a informação necessária consiste na manilha e em sua regra, e essas já foram transmitidas, evitando assim, dúzias de comandos.
c
- Carta cujo valor desejamospublic abstract void run()
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.
run
in interface java.lang.Runnable
public abstract void jogaCarta(Jogador j, Carta c)
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
j
- c
- public abstract void decideMao11(Jogador j, boolean aceita)
j
- Jogador que está respondendoaceita
- true se o jogador topa jogar, false se deixar para o parceiro
decidirpublic abstract void aumentaAposta(Jogador j)
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.
j
- Jogador que está solicitando o aumentopublic abstract void respondeAumento(Jogador j, boolean aceitou)
j
- Jogador que respondeu ao pedidoaceitou
- true
se ele mandou descer, false
se correupublic Carta[] getCartasDaRodada(int rodada)
rodada
- número de 1 a 3
public abstract void atualizaSituacao(SituacaoJogo s, Jogador j)
s
- objeto a atualizarj
- Jogador que receberá a situaçãopublic abstract boolean isBaralhoLimpo()
public abstract boolean isManilhaVelha()
protected int getValorTruco(Carta c)
public boolean adiciona(Jogador j)
j
- Jogador a adicionar
protected Jogador getJogador(int posicao)
posicao
- valor de 1 a 4
public char getManilha()
SituacaoJogo.MANILHA_INDETERMINADA
public void setManilha(Carta c)
Deve ser chamado a cada inicialização de mão.
c
- Carta virada. Ignorado se for jogo com manilha velhapublic boolean isAlguemTem11Pontos()
Isso não tem a ver com a "mão de 11" - aquela em que uma das equipes apenas tem 11. Toda mão de 11 retorna true aqui, mas o 11x11 também.
public void abortaJogo(int posicao)
Implementações podem sobrescrever (ex.: para notificar o servidor) mas devem chamar o super()
posicao
- posição (1 a 4) do jogador que motivou o abortpublic static void log(java.lang.String string)
string
- Mensagem informativa
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |