/// <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> /// Método para pedir posición al jugador /// </summary> /// <param name="tablero">Tablero en su situación actutal</param> public void Movimiento(Tablero tablero) { int piezasComidas; valoresElegidos = new Posicion(); ComprobarValidas(tablero); valoresElegidos = ElegirPosicion(tablero); bool pasa = false; if (valoresElegidos.Col == 0) { if (valoresElegidos.Row == 0) { pasa = true; } } if (!pasa) { Reglas.CambioDeColor(tablero, color, valoresElegidos.Row, valoresElegidos.Col, out piezasComidas); ActualizarTablero(tablero, valoresElegidos.Row, valoresElegidos.Col); } // valoresElegidos.Col, out piezasComidas); //ActualizarTablero(tablero, valoresElegidos.Row, valoresElegidos.Col); }
/// <summary> /// Método para controlar el movimiento del jugador /// </summary> /// <param name="tablero">Tablero en su situación actutal</param> public void Movimiento(Tablero tablero) { int piezasComidas; valoresElegidos = new Posicion(); bool pasa = false; ComprobarValidas(tablero); valoresElegidos = ElegirPosicion(tablero); if (valoresElegidos.Col == 0) { if (valoresElegidos.Row == 0) { pasa = true; } } /* Cambiamos de color las fichas 'comidas' y colocamos la pieza * en la posición elegida */ if (!pasa) { Reglas.CambioDeColor(tablero, color, valoresElegidos.Row, valoresElegidos.Col, out piezasComidas); ActualizarTablero(tablero, valoresElegidos.Row, valoresElegidos.Col); } //Reglas.CambioDeColor(tablero, color, valoresElegidos.Row, // valoresElegidos.Col, out piezasComidas); //ActualizarTablero(tablero, valoresElegidos.Row, valoresElegidos.Col); }
/// <summary> /// Método para pedir posición al jugador /// </summary> /// <param name="tablero">Tablero en su situación actutal</param> public void Movimiento(Tablero tablero) { int piezasComidas; valoresElegidos = new Posicion(); ComprobarValidas(tablero); valoresElegidos = ElegirPosicion(tablero); Reglas.CambioDeColor(tablero, color, valoresElegidos.Row, valoresElegidos.Col, out piezasComidas); ActualizarTablero(tablero, valoresElegidos.Row, valoresElegidos.Col); }
/// <summary> /// Método para pedir posición al jugador /// </summary> /// <param name="tablero">Tablero en su sitúación actual</param> public void Movimiento(Tablero tablero) { Posicion posicion = null; Boolean movimientoValido = false, pasa = false; int piezasComidas = 0; /* Pedimos posición de juego al jugador hasta que la que * introduzca cumpla con las reglas del juego */ do { posicion = ElegirPosicion(tablero); if (posicion.Col == 0) { if (posicion.Row == 0) { pasa = true; break; } } movimientoValido = ComprobarJugada(tablero, posicion, color); if (!movimientoValido) { Console.WriteLine("Jugada " + "INCORRECTA. Vuelve a introducir posición."); } } while (!movimientoValido); /* Cambiamos de color las fichas 'comidas' y colocamos la pieza * en la posición elegida en caso de no pasar turno */ if (!pasa) { Reglas.CambioDeColor(tablero, color, posicion.Row, posicion.Col, out piezasComidas); ActualizarTablero(tablero, posicion.Row, posicion.Col); } }
/// <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); }