コード例 #1
0
ファイル: OrdenadorNivel3.cs プロジェクト: floppp/Reversi
        /// <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);
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
ファイル: OrdenadorNivel3.cs プロジェクト: floppp/Reversi
        /// <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);
        }
コード例 #5
0
        /// <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);
            }
        }
コード例 #6
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);
        }