-- 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();
}
}
|