public static string Go(Partida ptd) { ptd.ColorMaquina = ptd.ColorTurno; Movimiento respuesta = ptd.Alejo.ElegirMovimiento(ptd); ptd.CambiarTurno(); return("move " + respuesta.ToString()); }
void Mover(Pieza pieza, Casilla cas) { piezaAnterior = pieza; pieza.MoverA(cas); pieza.Seleccionada = false; pieza = null; Partida.CambiarTurno(); }
public int AlphaBeta(int profundidad, int alpha, int beta, Partida ptd) { if (profundidad <= 0) { return(Evaluar(ptd)); } int cuenta, valor; Movimiento[] movimientosLegales = ptd.Tab.GenerarSeudoLegales(ptd.ColorTurno, out cuenta); int[] valorMovimiento = new int[cuenta]; for (int i = 0; i < cuenta; i++) { bool ilegalPorJaque = ptd.Tab.MoverPieza(movimientosLegales[i], true); if (ilegalPorJaque) { ptd.Tab.DeshacerMovimiento(movimientosLegales[i], true); continue; } ptd.CambiarTurno(); valor = -AlphaBeta(profundidad - 1, -beta, -alpha, ptd); ptd.CambiarTurno(); ptd.Tab.DeshacerMovimiento(movimientosLegales[i], true); valorMovimiento[i] = valor; if (valor >= beta && valor != 100000) { return(beta); } if (valor > alpha) { alpha = valor; if (ptd.ColorTurno == ptd.ColorMaquina && profundidad == this.Profundidad) { this.Eleccion = movimientosLegales[i]; } } } return(alpha); }
void Mover() { Casilla casilla = ElegirCasilla(); piezaAnterior = piezaSeleccionada; piezaSeleccionada.MoverA(casilla); piezaSeleccionada.Seleccionada = false; piezaSeleccionada = null; Partida.CambiarTurno(); }
public static string Usermove(string strMov, Partida ptd) { Movimiento usermove = new Movimiento(strMov); ptd.Tab.MoverPieza(usermove, false); ptd.CambiarTurno(); if (ptd.ColorMaquina != 2) { Movimiento respuesta = ptd.Alejo.ElegirMovimiento(ptd); ptd.Tab.MoverPieza(respuesta, false); ptd.CambiarTurno(); return("move " + respuesta.ToString()); } else { return("no respuesta"); } }