p1.aplic.mancala.jogo
Class UmJogo

java.lang.Object
  |
  +--p1.aplic.mancala.jogo.UmJogo
All Implemented Interfaces:
JogoMancala

public class UmJogo
extends java.lang.Object
implements JogoMancala

Regras deste jogo de Mancala (também chamado Kalaha). Mancala é jogado com sete buracos -- seis buracos de jogo e um buraco de pontuação, a Kalaha -- por jogador. No início do jogo, cada um dos 12 buracos de jogo contém 3 sementes (ou contas, ou pedras, ou bolas, ...). Para jogar, o jogador escolhe um buraco a partir do qual ele vai "semear" as sementes. Cada semente do buraco é colocada, uma de cada vez, em buracos sucessivos, movendo-se em sentido anti-horário. Sementes colocadas numa Kalaha são pontos para o dono da Kalaha. Sementes não são colocadas na Kalaha do oponente. Se a última semente cair na Kalaha do jogador, ele pode jogar novamente Se a última semente cair num buraco vazio do próprio jogador, ele captura as sementes do buraco oposto e as transfere para sua Kalaha Todas as sementes capturadas, além da semente que fez a captura, são colocadas na Kalaha do jogador. O jogo termina quando todos os buracos em algum lado do tabuleiro estejam vazios. O jogador com sementes em jogo os recolhe para sua Kalaha. O ganhador é o jogador com mais sementes na sua Kalaha.

Version:
1.0
Copyright (C) 2001 Universidade Federal da Paraíba.
Author:
Jacques Philippe Sauvé, jacques@dsc.ufpb.br

Fields inherited from interface p1.aplic.mancala.jogo.JogoMancala
COM_EVENTO, SEM_EVENTO
 
Constructor Summary
UmJogo(Jogador jogador1, Jogador jogador2)
          Construtor de um jogo de Mancala com dois jogadores.
 
Method Summary
 void addMancalaListener(MancalaListener l)
          Adiciona um listener interessado em receber eventos do jogo.
 boolean fimDeJogo()
          Verifica se o jogo acabou.
 Jogador getGanhador()
          Obtém o jogador que ganhou a partida.
 Jogador getJogador(int númeroDoJogador)
          Obtém um jogador através do seu número.
 Jogador getJogadorAtual()
          Obtem o jogador cuja vez é de jogar.
 Buraco getKalaha(Jogador jogador)
          Obtem a Kalaha do jogador indicado.
 Tabuleiro getTabuleiro()
          Obtém o tabuleiro sendo usado para o jogo.
 void iniciaJogo()
          Avisa ao jogo que queremos iniciar.
 void removeMancalaListener(MancalaListener l)
          Remove um listener não mais interessado em receber eventos do jogo.
 void setTabuleiro(Tabuleiro tabuleiro)
          Altera o tabuleiro sendo usado para o jogo.
 Jogador umaJogada(int indexBuraco, int querEvento)
          Faz uma jogada para o jogadorAtual do jogo no buraco indicado por indexBuraco.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UmJogo

public UmJogo(Jogador jogador1,
              Jogador jogador2)
Construtor de um jogo de Mancala com dois jogadores.
Parameters:
jogador1 - O primeiro jogador.
jogador2 - O segundo jogador.
Method Detail

getTabuleiro

public Tabuleiro getTabuleiro()
Obtém o tabuleiro sendo usado para o jogo.
Specified by:
getTabuleiro in interface JogoMancala
Returns:
O tabuleiro sendo usado para o jogo.

setTabuleiro

public void setTabuleiro(Tabuleiro tabuleiro)
Altera o tabuleiro sendo usado para o jogo.
Specified by:
setTabuleiro in interface JogoMancala
Parameters:
tabuleiro - O tabuleiro a usar.

getJogadorAtual

public Jogador getJogadorAtual()
Obtem o jogador cuja vez é de jogar.
Specified by:
getJogadorAtual in interface JogoMancala
Returns:
O jogador cuja vez é de jogar.

getJogador

public Jogador getJogador(int númeroDoJogador)
Obtém um jogador através do seu número. O jogador de baixo é 0, o de cima é 1.
Specified by:
getJogador in interface JogoMancala
Parameters:
númeroDoJogador - o número do jogador (0 = em baixo, 1 = em cima).
Returns:
O jogador indicado.

getGanhador

public Jogador getGanhador()
Obtém o jogador que ganhou a partida.
Specified by:
getGanhador in interface JogoMancala
Returns:
O jogador que ganhou a partida, ou null se tiver sido empate.

getKalaha

public Buraco getKalaha(Jogador jogador)
Obtem a Kalaha do jogador indicado.
Specified by:
getKalaha in interface JogoMancala
Parameters:
jogador - O jogador cuja Kalaha se deseja.
Returns:
Uma referência ao buraco representando a Kalaha do jogador.

iniciaJogo

public void iniciaJogo()
Avisa ao jogo que queremos iniciar.
Specified by:
iniciaJogo in interface JogoMancala

umaJogada

public Jogador umaJogada(int indexBuraco,
                         int querEvento)
                  throws MancalaException
Faz uma jogada para o jogadorAtual do jogo no buraco indicado por indexBuraco.
Specified by:
umaJogada in interface JogoMancala
Parameters:
indexBuraco - O índice (de 0 a 5) do buraco escolhido.
querEvento - igual a SEM_EVENTO, para uma jogada que não aparecer na interface com o usuário. Seria o caso para estratégias de jogadores automatizados que querem tentar várias jogadas. Uma jogada normal (com efeito total) usa COM_EVENTO.
Returns:
O próximo jogador a jogar.
Throws:
MancalaException - se um buraco ilegal for escolhido.

fimDeJogo

public boolean fimDeJogo()
Verifica se o jogo acabou.
Specified by:
fimDeJogo in interface JogoMancala
Returns:
true, se o jogo acabou; false, caso contrário.

addMancalaListener

public void addMancalaListener(MancalaListener l)
Adiciona um listener interessado em receber eventos do jogo. Normalmente usado para conectar o jogo a uma interface com o usuário.
Specified by:
addMancalaListener in interface JogoMancala
Parameters:
listener - O objeto que deseja receber os eventos do jogo.

removeMancalaListener

public void removeMancalaListener(MancalaListener l)
Remove um listener não mais interessado em receber eventos do jogo.
Parameters:
listener - O listener a ser descadastrado.