Example #1
0
        public void DibujarTablero(int[] filas, int[] columnas, Pieza pieza, List <Pieza> piezasList)
        {
            //Console.Clear();

            string[] filasLetras = new string[] { "A", "B", "C", "D", "E", "F", "G", "H" };

            Console.ForegroundColor = ConsoleColor.White;
            for (int i = 0; i < filas.Length; i++)
            {
                //Primera linea coordenadas letras
                Console.Write(filasLetras[i] + "-");
                for (int x = 0; x < columnas.Length; x++)
                {
                    if (!Coincide(piezasList, columnas[x], filas[i]))
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                        Console.Write("0 ");
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.White;
                    }
                }
                //Ultima lineas coordenadas numeros
                if (i == 7)
                {
                    Console.WriteLine();
                    Console.Write("- ");
                    foreach (var item in columnas)
                    {
                        Console.Write(item + " ");
                    }
                }
                Console.WriteLine();
            }
        }
Example #2
0
        public override bool Mover(int posY, int posX, List <Pieza> listadoPiezas)
        {
            //Logica movimiento torre

            var ultimoMovimientoPiezaMover = this.Movimientos.OrderByDescending(x => x.Tiempo).FirstOrDefault();
            var result = false;


            if (posY == ultimoMovimientoPiezaMover.PosY)
            {
                var casillerosAnalizar = Math.Abs(posX - ultimoMovimientoPiezaMover.PosX);
                if (posX > ultimoMovimientoPiezaMover.PosX)
                {
                    //Sumar Casilleros
                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var piezaAComer = Tablero.HayPieza(posY, ultimoMovimientoPiezaMover.PosX + i, listadoPiezas);

                        if (piezaAComer != null)
                        {
                            if (piezaAComer.Id == this.Id)
                            {
                                continue;
                            }
                            if (piezaAComer.Color == this.Color)
                            {
                                return(false);
                            }

                            if (i == casillerosAnalizar)
                            {
                                if (piezaAComer.Color != this.Color)
                                {
                                    Pieza.Comer(piezaAComer, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
                else
                {
                    //Restar Casilleros
                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var piezaAComer = Tablero.HayPieza(posY, ultimoMovimientoPiezaMover.PosX - i, listadoPiezas);

                        if (piezaAComer != null)
                        {
                            if (piezaAComer.Id == this.Id)
                            {
                                continue;
                            }
                            if (piezaAComer.Color == this.Color)
                            {
                                return(false);
                            }

                            if (i == casillerosAnalizar)
                            {
                                if (piezaAComer.Color != this.Color)
                                {
                                    Pieza.Comer(piezaAComer, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
            }
            if (posX == ultimoMovimientoPiezaMover.PosX)
            {
                var casillerosAnalizar = Math.Abs(posY - ultimoMovimientoPiezaMover.PosY);
                if (posY > ultimoMovimientoPiezaMover.PosY)
                {
                    //Sumar Casilleros
                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var piezaAComer = Tablero.HayPieza(ultimoMovimientoPiezaMover.PosY + i, posX, listadoPiezas);

                        if (piezaAComer != null)
                        {
                            if (piezaAComer.Id == this.Id)
                            {
                                continue;
                            }
                            if (piezaAComer.Color == this.Color)
                            {
                                return(false);
                            }

                            if (i == casillerosAnalizar)
                            {
                                if (piezaAComer.Color != this.Color)
                                {
                                    Pieza.Comer(piezaAComer, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
                else
                {
                    //Restar Casilleros
                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var piezaAComer = Tablero.HayPieza(ultimoMovimientoPiezaMover.PosY - i, posX, listadoPiezas);

                        if (piezaAComer != null)
                        {
                            if (piezaAComer.Id == this.Id)
                            {
                                continue;
                            }
                            if (piezaAComer.Color == this.Color)
                            {
                                return(false);
                            }

                            if (i == casillerosAnalizar)
                            {
                                if (piezaAComer.Color != this.Color)
                                {
                                    Pieza.Comer(piezaAComer, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
            }

            return(result);
        }
Example #3
0
        public override bool Mover(int posY, int posX, List <Pieza> listadoPiezas)
        {
            var ultimoMovimientoPiezaMover = this.Movimientos.OrderByDescending(x => x.Tiempo).FirstOrDefault();

            //Logica movimiento Alfil
            var result = false;


            //Posiciones validas ↓-→
            for (int j = 1; j < 8; j++)
            {
                var posNuevaY = ultimoMovimientoPiezaMover.PosY + j;
                var posNuevaX = ultimoMovimientoPiezaMover.PosX + j;

                if (posNuevaY == posY && posNuevaX == posX)
                {
                    //Movimiento Abajo - Derecha
                    var casillerosAnalizarX = Math.Abs(posNuevaX - ultimoMovimientoPiezaMover.PosX);
                    var casillerosAnalizarY = Math.Abs(posNuevaY - ultimoMovimientoPiezaMover.PosY);

                    for (int i = 1; i <= casillerosAnalizarX; i++)
                    {
                        var hayPieza = Tablero.HayPieza(ultimoMovimientoPiezaMover.PosY + i, ultimoMovimientoPiezaMover.PosX + i, listadoPiezas);

                        if (hayPieza != null)
                        {
                            if (hayPieza.Id == this.Id)
                            {
                                continue;
                            }
                            if (hayPieza.Color == this.Color)
                            {
                                return(false);
                            }
                            if (i == casillerosAnalizarX)
                            {
                                if (hayPieza.Color != this.Color)
                                {
                                    Pieza.Comer(hayPieza, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
            }
            //Posiciones validas ←-↑
            for (int j = 1; j < 8; j++)
            {
                var posNuevaY = ultimoMovimientoPiezaMover.PosY - j;
                var posNuevaX = ultimoMovimientoPiezaMover.PosX - j;

                if (posNuevaY == posY && posNuevaX == posX)
                {
                    //Movimiento Abajo - Derecha
                    var casillerosAnalizar = Math.Abs(posNuevaX - ultimoMovimientoPiezaMover.PosX);

                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var hayPieza = Tablero.HayPieza(casillerosAnalizar + i, casillerosAnalizar + i, listadoPiezas);

                        if (hayPieza != null)
                        {
                            if (hayPieza.Id == this.Id)
                            {
                                continue;
                            }
                            if (hayPieza.Color == this.Color)
                            {
                                return(false);
                            }
                            if (i == casillerosAnalizar)
                            {
                                if (hayPieza.Color != this.Color)
                                {
                                    Pieza.Comer(hayPieza, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
            }
            //Posiciones validas ↓-←
            for (int j = 1; j < 8; j++)
            {
                var posNuevaY = ultimoMovimientoPiezaMover.PosY + j;
                var posNuevaX = ultimoMovimientoPiezaMover.PosX - j;

                if (posNuevaY == posY && posNuevaX == posX)
                {
                    //Movimiento Abajo - Derecha
                    var casillerosAnalizar = Math.Abs(posNuevaX - ultimoMovimientoPiezaMover.PosX);

                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var hayPieza = Tablero.HayPieza(casillerosAnalizar + i, casillerosAnalizar - i, listadoPiezas);

                        if (hayPieza != null)
                        {
                            if (hayPieza.Id == this.Id)
                            {
                                continue;
                            }
                            if (hayPieza.Color == this.Color)
                            {
                                return(false);
                            }
                            if (i == casillerosAnalizar)
                            {
                                if (hayPieza.Color != this.Color)
                                {
                                    Pieza.Comer(hayPieza, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
            }
            //Posiciones validas ↑-→
            for (int j = 1; j < 8; j++)
            {
                var posNuevaY = ultimoMovimientoPiezaMover.PosY - j;
                var posNuevaX = ultimoMovimientoPiezaMover.PosX + j;

                if (posNuevaY == posY && posNuevaX == posX)
                {
                    //Movimiento Abajo - Derecha
                    var casillerosAnalizar = Math.Abs(posNuevaX - ultimoMovimientoPiezaMover.PosX);

                    for (int i = 1; i <= casillerosAnalizar; i++)
                    {
                        var hayPieza = Tablero.HayPieza(casillerosAnalizar - i, casillerosAnalizar + i, listadoPiezas);

                        if (hayPieza != null)
                        {
                            if (hayPieza.Id == this.Id)
                            {
                                continue;
                            }
                            if (hayPieza.Color == this.Color)
                            {
                                return(false);
                            }
                            if (i == casillerosAnalizar)
                            {
                                if (hayPieza.Color != this.Color)
                                {
                                    Pieza.Comer(hayPieza, listadoPiezas);
                                }
                            }
                        }
                    }
                    result = true;
                }
            }


            return(result);
        }
Example #4
0
 public static void Comer(Pieza pieza, List <Pieza> listPieza)
 {
     listPieza.Remove(pieza);
 }