package baralho;
import baralho.Carta.Naipe;
import baralho.Carta.Valor;
import toolkit.List;
public class Baralho {
private static final int PRIMEIRA_CARTA = 0;
private final List<Carta> cartas = new List<Carta>();
private IPontuador pontuador = new PontuadorPadrao();
public Baralho(){
for (Naipe naipe : Naipe.values()) {
for (Valor valor : Valor.values()) {
cartas.append(new Carta(valor, naipe));
}
}
}
public void setPontuador(IPontuador pontuador) {
this.pontuador = pontuador;
}
public void embaralha() {
// Collections.shuffle(baralho);
// baralho.Baralha();
}
public Carta removeCarta(int indice){
return cartas.drop(indice);
}
public Carta pegaTopo() {
Carta cartaAux;
int idCarta = 0;
idCarta = cartas.length()-1;
cartaAux = cartas.last();
removeCarta(idCarta);
return cartaAux;
}
public Carta pegaBase() {
Carta cartaAux;
cartaAux = cartas.get(PRIMEIRA_CARTA);
removeCarta(PRIMEIRA_CARTA);
return cartaAux;
}
public Carta pegaMeio() {
Carta cartaAux;
int idCarta = 0;
idCarta = cartas.length()/2;
cartaAux = cartas.get(idCarta);
removeCarta(idCarta);
return cartaAux;
}
public void devolveTopo(Carta carta) {
cartas.append(carta);
}
public int getPontos(){
int pontos = 0;
for (int i = 0; i < cartas.length(); i++) {
pontos += pontuador.pontuar(cartas.get(i));
}
return pontos;
}
public String mostraBaralho() {
String mostraBaralho = "";
for (int i = 0; i < cartas.length(); i++) {
mostraBaralho += cartas.get(i).valor() + " de " + cartas.get(i).naipe() + "\n";
}
return mostraBaralho;
}
private class PontuadorPadrao implements IPontuador {
@Override
public int pontuar(Carta carta) {
return 0;
}
}
}