import java.util.ArrayList;
public class JugadorRobotV2 extends Jugador {
    private static int NSerie = 0;
    boolean debugMode;
    public JugadorRobotV2(Mesa mesa, boolean debugMode) {
        super(Jugador.ROBOT, "T-1000 N" + ++NSerie, mesa);
        this.debugMode = debugMode; // omniconsciencia en Partida
    }
    @Override
    public Tirada preguntarTiradaAJugador(ArrayList<Tirada> tiradas) {
        Tirada tiradaARealizar = null;
        int max_heuristica = -1;
        Duerme.duermeUnRatito();
        // Tirada tiradaARealizar = tiradas.get(Azar.numeroAlAzar(tiradas.size()));
        for (Tirada t : tiradas) {
            int heuristica = 0;
            Ficha ficha = t.getFicha();
            if (ficha.esUnDoble()) {
                heuristica += 10;
            }
            heuristica += cuantasFichasVeoConNum(ficha.getA());
            heuristica += cuantasFichasVeoConNum(ficha.getB());
            if (debugMode) {
                System.out.print(" | h(" + t + ") = " + heuristica);
            }
            if (heuristica > max_heuristica) {
                max_heuristica = heuristica;
                tiradaARealizar = t;
            }
        }
        if (debugMode) {
            System.out.println();
        }
        return tiradaARealizar;
    }
    public int cuantasFichasConNum(int n) {
        int cuantas = 0;
        for (Ficha f : fichas) {
            if ((f.getA() == n) || (f.getB() == n)) {
                cuantas++;
            }
        }
        return cuantas;
    }
    public int cuantasFichasVeoConNum(int n) {
        return (cuantasFichasConNum(n) + mesa.cuantasFichasConNum(n));
    }
    public int cuantasFichasVeoConNumDeExtremo() {
        return (cuantasFichasVeoConNum(mesa.getExtremoIzquierdo())
                + cuantasFichasVeoConNum(mesa.getExtremoDerecho()));
    }
}
