XP : CodigoFrameworkJogo

XP » XP » WebHome » TrabalhosFinais » MauMau » CodigoFrameworkJogo

-- NeyZunino - 08 Jul 2005

package fwjogos;

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, Set<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 resultado(){
      if (resultado == null)
         throw new AssertionError("Impossivel obter resultado sem jogar");
      return resultado;
   }

   public int númeroDeParticipantes() {
      return jogadores.size();
   }

}

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