/// <summary> /// Buscamos, con una profundidad definida (por defecto 3) qué mo- /// vimiento es más provechoso para el jugador. Una especie de /// Minimax bastante sui-generis /// </summary> /// <param name="tablero">Tablero del que queremos obtener distintas /// opciones de juego</param> /// <param name="profundidad">rango de movimientos máximos que podemos /// simular en cascada</param> /// <returns></returns> public Posicion ElegirPosicion_bis(Tablero tablero, int profundidad) { Console.Read(); int piezasComidas; int row, col; Posicion posicionElegida = new Posicion(); Tablero tableroCopia = new Tablero(); tableroCopia.Copiar(tablero); if (profundidad > 0) { foreach (Posicion posicion in posicionesValidas) { profundidad--; Reglas.CambioDeColor(tableroCopia, color, posicion.Row, posicion.Col, out piezasComidas); row = posicion.Row; col = posicion.Col; ImprimirMatriz(); fichasComidas[row, col] += piezasComidas; ElegirPosicion_bis(tableroCopia, profundidad); } } posicionElegida = ComprobarMejorPosicion(); return(posicionElegida); }
/// <summary> /// Buscamos posición que genere una mayor ganancia de piezas del /// rival /// </summary> /// <param name="tablero">Tablero del que queremos obtener /// distintas opciones de juego</param> /// <param name="profundidad">rango de movimientos máximos que /// podemos simular en cascada</param> /// <returns></returns> public Posicion ElegirPosicion_bis(Tablero tablero) { int piezasComidas; int row, col; Posicion posicionElegida = new Posicion(); Tablero tableroCopia = new Tablero(); tableroCopia.Copiar(tablero); foreach (Posicion posicion in posicionesValidas) { Reglas.CambioDeColor(tableroCopia, color, posicion.Row, posicion.Col, out piezasComidas); row = posicion.Row; col = posicion.Col; fichasComidas[row, col] += piezasComidas; } ImprimirMatriz(); posicionElegida = ComprobarMejorPosicion(); return(posicionElegida); }