fw.jogoCartas
Class Jogo

java.lang.Object
  |
  +--fw.jogoCartas.Jogo

public class Jogo
extends java.lang.Object
implements java.io.Serializable

E' a classe controladora do framework. Define todos os métodos necessários para manipular alguns tipos de jogo de cartas, tais como Aces Up, Captive Queens e Baker's Dozen.
As propriedades criadorBaralho, distribuidorCartas, verificadorRegras e populadorPilhas devem ser fornecidas pelo usuario para completar o framework e compor um novo jogo.
Os componentes que devem ser plugados aqui para formar os jogos Aces Up, Baker's Dozen e Captive Queens ja' sao disponibilidos pelo framework, mas esta versao do framework impoe que novos componentes deverao ser criados se outros jogos alem destes forem desejados. Ao criar estes novos componentes as interfaces FactoryBaralhoIF, DistribuidorCartasIF, VerificadorRegrasIF e PopuladorPilhasIF devem ser implementadas.
Uma versao mais bem elaborada do framework deveria possuir componentes de menor granularidade que nao impusessem a criacao de novos componentes sempre que novos jogos fossem desejados.

Version:
1.0
Author:
Fabiana Paulino Guedes, fabianap@dsc.ufpb.br, Raquel Vigolvino Lopes, rakel@dsc.ufpb.br
See Also:
Serialized Form

Field Summary
private  BaralhoIF baralho
          O objeto que representa o baralho que será utilizado no jogo.
private  FactoryBaralhoIF criadorBaralho
          Um objeto que cria o baralho utilizado no jogo.
private  DistribuidorCartasIF distribuidorCartas
          Uma estrategia para efetuar a distribuicao inicial das cartas entre as pilhas do jogo.
private  boolean jogoIniciado
          Indica se o jogo ja foi iniciado.
private  ColecaoPilhasIF pilhas
          A colecao de pilhas do jogo.
private  PopuladorPilhasIF populadorPilhas
          Uma estrategia para criar as pilhas deste jogo.
private  boolean venceu
          Um valor booleano que indica se o jogador já venceu o jogo.
private  VerificadorRegrasIF verificadorRegras
          Uma estrategia para verificar se a jogada solicitada e' permitida de acordo com as regras do jogo.
 
Constructor Summary
Jogo()
          Cria um novo jogo e atribui valores nulos aos seus atributos.
Jogo(FactoryBaralhoIF criador, DistribuidorCartasIF distribuidor, VerificadorRegrasIF verificador, PopuladorPilhasIF populador)
          Cria um novo jogo e inicializa os seus atributos com os valores recebidos como parametros.
 
Method Summary
 java.lang.String getCarta(java.lang.String nomePilha)
          Retorna o nome da carta que estiver na pilha identificada por nomePilha.
 java.lang.String getCartaAt(java.lang.String nomePilha, int indice)
          Retorna o nome da carta que estiver na posição indice da pilha identificada por nomePilha.
 FactoryBaralhoIF getCriadorBaralho()
          Retorna o criador de baralho deste jogo.
 DistribuidorCartasIF getDistribuidorCartas()
          Retorna o distribuidor de cartas deste jogo.
 java.lang.String getPontuacao()
          Retorna a pontuação do jogo corrente.
 PopuladorPilhasIF getPopuladorPilhas()
          Retorna o populador de pilhas deste jogo.
 java.lang.String getRegras()
          Retorna todas as regras do jogo, além de algumas dicas.
 boolean getVenceu()
          Retorna o valor que indica se o jogador já venceu o jogo.
 VerificadorRegrasIF getVerificadorRegras()
          Retorna o verificador de regras deste jogo.
 boolean iniciarEstoquePermitido()
          Indica se a pilha estoque do jogo ainda pode ser reinicializada.
 void iniciarJogo()
          Baralha e faz a distribuição inicial das cartas.
 void iniciarJogo(long numJogo)
          Baralha as cartas a partir de um número de jogo e faz a distribuição inicial das cartas.
 void joga(java.lang.String fonte, java.lang.String destino)
          Permite que uma carta seja movida de uma pilha para outra.
 int numCartas(java.lang.String nomePilha)
          Retorna o número de cartas existentes na pilha identificada por nomePilha.
 void setCriadorBaralho(FactoryBaralhoIF criador)
          Atribui um novo criador de Baralho.
 void setDistribuidorCartas(DistribuidorCartasIF distribuidor)
          Atribui um novo distribuidor de cartas.
 void setPopuladorPilhas(PopuladorPilhasIF populador)
          Atribui um novo populador de pilhas.
 void setVerificadorRegras(VerificadorRegrasIF verificador)
          Atribui um novo verificador de regras.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

pilhas

private ColecaoPilhasIF pilhas
A colecao de pilhas do jogo.

baralho

private BaralhoIF baralho
O objeto que representa o baralho que será utilizado no jogo.
See Also:
BaralhoIF

venceu

private boolean venceu
Um valor booleano que indica se o jogador já venceu o jogo.

jogoIniciado

private boolean jogoIniciado
Indica se o jogo ja foi iniciado.

populadorPilhas

private PopuladorPilhasIF populadorPilhas
Uma estrategia para criar as pilhas deste jogo.

criadorBaralho

private FactoryBaralhoIF criadorBaralho
Um objeto que cria o baralho utilizado no jogo.

distribuidorCartas

private DistribuidorCartasIF distribuidorCartas
Uma estrategia para efetuar a distribuicao inicial das cartas entre as pilhas do jogo.

verificadorRegras

private VerificadorRegrasIF verificadorRegras
Uma estrategia para verificar se a jogada solicitada e' permitida de acordo com as regras do jogo.
Constructor Detail

Jogo

public Jogo()
Cria um novo jogo e atribui valores nulos aos seus atributos.

Jogo

public Jogo(FactoryBaralhoIF criador,
            DistribuidorCartasIF distribuidor,
            VerificadorRegrasIF verificador,
            PopuladorPilhasIF populador)
Cria um novo jogo e inicializa os seus atributos com os valores recebidos como parametros.
Parameters:
criador - O objeto criador do baralho.
distribuidor - O objeto que ira' efetuar a distribuicao inicial das cartas entre as pilhas do jogo.
verificador - O objeto que conhece as regras do jogo.
populador - O objeto que ira' criar as pilhas do jogo.
Method Detail

iniciarJogo

public void iniciarJogo()
Baralha e faz a distribuição inicial das cartas.

iniciarJogo

public void iniciarJogo(long numJogo)
Baralha as cartas a partir de um número de jogo e faz a distribuição inicial das cartas. Sempre que o número do jogo for o mesmo a sequencia de cartas do baralho será igual.
Parameters:
numJogo - Um número que será utilizado para traçar o baralho.

setPopuladorPilhas

public void setPopuladorPilhas(PopuladorPilhasIF populador)
Atribui um novo populador de pilhas.
Parameters:
populador - O novo populador de pilhas do jogo.

getPopuladorPilhas

public PopuladorPilhasIF getPopuladorPilhas()
Retorna o populador de pilhas deste jogo.
Returns:
A propriedade populadorPilhas.

setCriadorBaralho

public void setCriadorBaralho(FactoryBaralhoIF criador)
Atribui um novo criador de Baralho.
Parameters:
criador - O novo criador de baralhos do jogo.

getCriadorBaralho

public FactoryBaralhoIF getCriadorBaralho()
Retorna o criador de baralho deste jogo.
Returns:
A propriedade criadorBaralho.

setDistribuidorCartas

public void setDistribuidorCartas(DistribuidorCartasIF distribuidor)
Atribui um novo distribuidor de cartas.
Parameters:
distribuidor - O novo distribuidor de cartas do jogo.

getDistribuidorCartas

public DistribuidorCartasIF getDistribuidorCartas()
Retorna o distribuidor de cartas deste jogo.
Returns:
A propriedade distribuidorCartas.

setVerificadorRegras

public void setVerificadorRegras(VerificadorRegrasIF verificador)
Atribui um novo verificador de regras.
Parameters:
verificador - O novo verificador de regras do jogo.

getVerificadorRegras

public VerificadorRegrasIF getVerificadorRegras()
Retorna o verificador de regras deste jogo.
Returns:
a propriedade verificadorRegras.

joga

public void joga(java.lang.String fonte,
                 java.lang.String destino)
          throws JogadaNaoPermitidaException
Permite que uma carta seja movida de uma pilha para outra.
Parameters:
fonte - O nome da pilha fonte.
destino - O nome da pilha destino.
Throws:
JogadaNaoPermitidaException - Sempre que o jogador tentar uma jogada que não for condizente com as regras do jogo.

getPontuacao

public java.lang.String getPontuacao()
Retorna a pontuação do jogo corrente. Sempre inicia com zero.
Returns:
A pontuação do jogo corrente.

getRegras

public java.lang.String getRegras()
Retorna todas as regras do jogo, além de algumas dicas.
Returns:
As regras do jogo.

getVenceu

public boolean getVenceu()
Retorna o valor que indica se o jogador já venceu o jogo.
Returns:
True se o jogador já venceu o jogo e false caso contrário.

getCarta

public java.lang.String getCarta(java.lang.String nomePilha)
Retorna o nome da carta que estiver na pilha identificada por nomePilha.
Parameters:
nomePilha - O nome de uma pilha.
Returns:
O nome da carta que estiver no topo de nomePilha.

getCartaAt

public java.lang.String getCartaAt(java.lang.String nomePilha,
                                   int indice)
Retorna o nome da carta que estiver na posição indice da pilha identificada por nomePilha.
Parameters:
nomePilha - O nome de uma pilha.
indice - A posição da carta na pilha.
Returns:
O nome da carta que estiver na posição indice de nomePilha.

numCartas

public int numCartas(java.lang.String nomePilha)
Retorna o número de cartas existentes na pilha identificada por nomePilha.
Parameters:
nomePilha - O nome de uma pilha.
Returns:
O número de cartas da pilha.

iniciarEstoquePermitido

public boolean iniciarEstoquePermitido()
Indica se a pilha estoque do jogo ainda pode ser reinicializada.
Returns:
False quando a pilha estoque não pode ser reinicializada e true caso contrário.