XP : NovoCodigoJogo

XP » XP » WebHome » TrabalhosFinais » JogoComplementoDeDez » NovoCodigoJogo

-- GabrielBeletti - 27 Jun 2005

package src;

import java.util.HashSet;
import java.util.Set;

public abstract class Jogo {
   
   private Resultado resultado;   
   protected final Set<Jogador> _jogadores = new HashSet<Jogador>();
   private int numeroMinimoDeJogadores, numeroMaximoDeJogadores;

   public Jogo(Set<String> p, int i, int j) {      
      numeroMinimoDeJogadores = i;
      numeroMaximoDeJogadores = j;

      for (String nome : p) {
         _jogadores.add(new Jogador(nome));
      }
      
      assert this.númeroDeParticipantes() == p.size() : "Os candidatos são os jogadores";
      assert numeroMinimoDeJogadores <= númeroDeParticipantes() : "O jogo não conta com o número minimo de jogadores";
      assert numeroMaximoDeJogadores >= númeroDeParticipantes() : "O jogo extrapolou o número máximo de jogadores";
   }
   
   public abstract void jogue();
   
   protected final void crieResultado(Set<String> vencedores, String descricao){
      Set<String> jogadoresJogo = new HashSet<String>();
      for (Jogador jog : _jogadores){
         jogadoresJogo.add(jog.getNome());
      }
      
      for (String v : vencedores ){
         assert (jogadoresJogo.contains(v)): "Resultado com vencedores invalidos";
      }
      
      resultado = new Resultado(vencedores,descricao);
   }
   
   public final Resultado getResultado(){
      if (resultado == null)
         throw new AssertionError("Impossivel obter resultado sem jogar");
      return resultado;
   }
   
    public int númeroDeParticipantes() {
        return _jogadores.size();
    }

}//end class

E D U G R A F - Laboratório de Software Educacional - UFSC - CTC - INE
Campus Universitário - Trindade, Florianópolis, SC, Brasil 88040-090
Fone: +55 48 331 9735 / Fax: +55 48 331-9770