Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }