/* este método utiliza NegaMax y algoritmos genéticos.*/ public Point evaluarMovida() { BuscadorAbstracto buscador; buscador = new NegaMax(); Evaluacion funcionEvaluacion; // = new EvaluacionEstrategica(estrategia, tablero); Point punto; if (this.turno == Turno.NEGRAS) { funcionEvaluacion = new EvaluacionEstrategica(jugadorNegro.getEstrategia()); punto = buscador .busquedaSimple( tablero, tablero.obtenerTipoTablero(), jugadorNegro.color(), profundidad, funcionEvaluacion) .obtenerPunto(); } else { funcionEvaluacion = new EvaluacionEstrategica(jugadorBlanco.getEstrategia()); punto = buscador .busquedaSimple( tablero, tablero.obtenerTipoTablero(), jugadorBlanco.color(), profundidad, funcionEvaluacion) .obtenerPunto(); } return punto; }
public Set<Point> hacerMovimiento(Point movida) { Set<Point> puntos; if (this.turno == Turno.NEGRAS) { puntos = tablero.hacerMovimiento(movida, jugadorNegro.color()); jugadorNegro.setPuntaje(tablero.contar(EstadoCasilla.BLACK)); } else { puntos = tablero.hacerMovimiento(movida, jugadorBlanco.color()); jugadorBlanco.setPuntaje(tablero.contar(EstadoCasilla.WHITE)); } porcentajeEsquinas(tablero, tablero.obtenerTipoTablero(), jugadorActual().color()); // porcentajeCasillasCentrales(tablero, jugadorActual().color()); /**/ /*EvaluacionEstrategica funcionEvaluacion = new EvaluacionEstrategica(jugadorActual().getEstrategia()); double fx = funcionEvaluacion.evaluar(tablero, tablero.obtenerTipoTablero(), jugadorActual().color()); System.out.println(jugadorActual().color()+" -> "+ fx + " = " +jugadorActual().getEstrategia()[0] + "*"+funcionEvaluacion.getX1()+" + " +jugadorActual().getEstrategia()[1] + "*"+funcionEvaluacion.getX2()+" - " +jugadorActual().getEstrategia()[2] + "*"+funcionEvaluacion.getX3()+" + " +jugadorActual().getEstrategia()[3] + "*"+funcionEvaluacion.getX4() );*/ // System.out.println("Esquinas de Negro = " + esquinasNegro); // System.out.println("Esquinas de Blanco = " + esquinasBlanco); /*System.out.println("Centrales de Negro = " + centralesNegro); System.out.println("Centrales de Blanco = " + centralesBlanco);*/ return puntos; }
public boolean esEmpate() { return jugadorNegro.getPuntaje() == jugadorBlanco.getPuntaje(); }
public Jugador obtenerGanador() { return jugadorNegro.getPuntaje() < jugadorBlanco.getPuntaje() ? jugadorBlanco : jugadorNegro; }
public int obtenerPuntajeBlanco() { jugadorBlanco.setPuntaje(tablero.contar(EstadoCasilla.WHITE)); return jugadorBlanco.getPuntaje(); }
public int obtenerPuntajeNegro() { jugadorNegro.setPuntaje(tablero.contar(EstadoCasilla.BLACK)); return jugadorNegro.getPuntaje(); }
public void setEstrategiaJugadores(int[] estrategiaNegro, int[] estrategiaBlanco) { jugadorBlanco.setEstrategia(estrategiaBlanco); jugadorNegro.setEstrategia(estrategiaNegro); }