Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Elegimos posición con la restricción de que sea un entero
        /// </summary>
        /// <returns>Posición elegida, solo comprobado que es un valor
        /// numérico</returns>
        public Posicion ElegirPosicion(Tablero tablero)
        {
            Posicion posicion = new Posicion();
            String   rowString, colString;
            Boolean  esEntero;
            int      row = 0, col = 0;

            do
            {
                Console.WriteLine("Fila");
                rowString = Console.ReadLine();
                esEntero  = Reglas.ComprobarEntero(rowString, out row);
                if (!esEntero)
                {
                    continue;
                }

                Console.WriteLine("columna");
                colString = Console.ReadLine();
                esEntero  = Reglas.ComprobarEntero(colString, out col);
            } while (!esEntero);

            posicion.Row = row;
            posicion.Col = col;

            return(posicion);
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
            Reglas.CambioDeColor(tablero, color, valoresElegidos.Row,
                                 valoresElegidos.Col, out piezasComidas);
            ActualizarTablero(tablero, valoresElegidos.Row, valoresElegidos.Col);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Hacemos dos comprobaciones, que la posición está dentro del tablero
        /// y que cumple con las reglas del juego.
        /// </summary>
        /// <param name="tablero">Tablero en la situación actual de juego
        /// </param>
        /// <param name="posicion">Posición elegida por el jugador cuya
        /// legalidad queremos comprobar</param>
        /// <param name="color">Color del jugador</param>
        /// <returns>True si la jugada es correcta, false en caso contrario
        /// </returns>
        private Boolean ComprobarJugada(Tablero tablero, Posicion posicion, Color color)
        {
            Boolean movimientoValido;

            movimientoValido = Reglas.PosicionDentroTablero(posicion.Row, posicion.Col);
            if (!movimientoValido)
            {
                return(false);
            }
            movimientoValido = Reglas.PosicionLegal(tablero, posicion.Row, posicion.Col, color);
            if (!movimientoValido)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Elegimos el nivel del rival en caso de que sea el ordenador
        /// </summary>
        /// <returns>Nivel elegido</returns>
        private static int ElegirNivelCPU()
        {
            int    numero = 0;
            String nivel;

            do
            {
                Console.WriteLine("Elegir nivel CPU (1-3): ");
                nivel = Console.ReadLine();
                Reglas.ComprobarEntero(nivel, out numero);
                if (numero == 3)
                {
                    Console.WriteLine("Aún no implementado!!!!");
                }
            } while (numero < 1 || numero > 2);

            return(numero);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Método para comprobar en qué casillas podemos colocar piezas.
        /// </summary>
        /// <param name="tablero">Tablero en su situación actual</param>
        public void ComprobarValidas(Tablero tablero)
        {
            posicionesValidas = new Queue();

            Posicion posicion;

            for (int row = 1; row < 9; row++)
            {
                for (int col = 1; col < 9; col++)
                {
                    if (Reglas.PosicionLegal(tablero, row, col, color))
                    {
                        posicion     = new Posicion();
                        posicion.Row = row;
                        posicion.Col = col;
                        posicionesValidas.Enqueue(posicion);
                    }
                }
            }
        }
Ejemplo n.º 9
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);
            }
        }
Ejemplo n.º 10
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);
        }