Exemple #1
0
 public ComandoMover(Pieza p, Coordenada PosInicial, Coordenada PosFinal, Pieza[,] Tablero, List <Coordenada> ListaBlanco, List <Coordenada> ListaNegros)
 {
     this.p          = p;
     this.PosInicial = PosInicial;
     this.PosFinal   = PosFinal;
     this.Tablero    = Tablero;
     p.CalcularMovimientos(Tablero, PosInicial, ListaBlanco, ListaNegros, p.Color);
     ListaMovBlancos = ListaBlanco;
     ListaMovNegros  = ListaNegros;
 }
Exemple #2
0
        //El CalcularMovimientos del Rey es diferente porque antes debe verificar que la posicion del rey no este en la lista de movimientos
        //del bando contraria asi no cae en jaque
        public override void CalcularMovimientos(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            //Dependiendo del color del rey recorre una lista u otra, y compara cada posicion de estas con su posicion
            //Si hay coincidencia no te deja poner al rey, caso contraria, todo normal
            if (Color == 'B')
            {
                if (ListaNegra.Count > 0)
                {
                    foreach (Coordenada x in ListaNegra)
                    {
                        if (x.X == Coordenadas.X && x.Y == Coordenadas.Y)
                        {
                            Console.WriteLine("No se puede poner al Rey en jaque");
                            Jaque = true;
                        }
                    }

                    if (Jaque == false)
                    {
                        UbicarRey(Tablero, Coordenadas, ListaBlanca, ListaNegra, Color);
                        Tablero[Coordenadas.X, Coordenadas.Y] = this;
                    }
                }
                else if (ListaNegra.Count == 0)
                {
                    UbicarRey(Tablero, Coordenadas, ListaBlanca, ListaNegra, Color);
                    Tablero[Coordenadas.X, Coordenadas.Y] = this;
                }
            }
            else if (Color == 'N')
            {
                if (ListaBlanca.Count > 0)
                {
                    foreach (Coordenada c in ListaBlanca)
                    {
                        if (c.X == Coordenadas.X && c.Y == Coordenadas.Y)
                        {
                            Console.WriteLine("No se puede poner al Rey en jaque");
                            Jaque = true;
                        }
                    }

                    if (Jaque == false)
                    {
                        UbicarRey(Tablero, Coordenadas, ListaBlanca, ListaNegra, Color);
                        Tablero[Coordenadas.X, Coordenadas.Y] = this;
                    }
                }
                else if (ListaBlanca.Count == 0)
                {
                    UbicarRey(Tablero, Coordenadas, ListaBlanca, ListaNegra, Color);
                    Tablero[Coordenadas.X, Coordenadas.Y] = this;
                }
            }
        }
Exemple #3
0
 public Tablero()
 {
     Casilleros = new Pieza[8, 8];
     for (int n = 0; n < 8; n++)
     {
         for (int x = 0; x < 8; x++)
         {
             Casilleros[n, x] = new Piezas.Vacio();
         }
     }
     MovimientosBlancos = new List <Movimiento>();
     MovimientosNegros  = new List <Movimiento>();
 }
Exemple #4
0
 /// <summary>
 /// LoadContent will be called once per game and is the place to load
 /// all of your content.
 /// </summary>
 protected override void LoadContent()
 {
     // Create a new SpriteBatch, which can be used to draw textures.
     spriteBatch = new SpriteBatch(GraphicsDevice);
     texture     = this.Content.Load <Texture2D>("terminator");
     imgGanador  = this.Content.Load <Texture2D>("ganaste");
     pieza       = new Pieza[nPiezas, nPiezas];
     cortes      = nPiezas;
     ganador     = false;
     anchoCorte  = (int)(texture.Width / cortes);
     altoCorte   = (int)(texture.Height / cortes);
     generarRompecabezas();
     mesclarPiezas();
 }
	/**
	 * Coloca unas pocas figuras en el tablero para hacer una demostracion
	 */
	private void SpawnTodasDemo(){
		//Crea la matriz de movimientos de colocar piezas
		/*Para elegir la posicion de las piezas rojas*/
		for (int i = 0; i < 10; i++) {
			for (int j = 4; j < 8; j++) {
				rRojo [i, j] = true;				
			}
		}
		/*Para elegir la posicion de las piezas azules*/
		for (int i = 0; i < 10; i++) {
			for (int j = 10; j < 14; j++) {
				rAzul [i, j] = true;				
			}
		}

		figurasActivas = new List<GameObject>();
		Piezas = new Pieza[10, 18];

		//Spawn rojas
		for(int i = 0; i <1; i++){
			for(int j = 0; j < 1; j++){
				SpawnFiguras (20, j, i);
			}
		}
		//SpawnFiguras (18, 2, 0);

		//Spawn azules
		for(int i = 17; i < 18; i++){
			for(int j = 1; j < 3; j++){
				SpawnFiguras (j,j,i	);
			}
		}

		//Inicializa y gestiona las imagenes de cada pieza, para poder hacerlas desaparecer despues
		GameObject[] arrayAddLista = GameObject.FindGameObjectsWithTag ("Plano Azul");
		for(int i = 0; i < arrayAddLista.Length; i++)
			planosFigAzules.Add(arrayAddLista[i]);
		arrayAddLista = GameObject.FindGameObjectsWithTag ("Plano Rojo");
		for(int i = 0; i < arrayAddLista.Length; i++)
			planosFigRojos.Add(arrayAddLista[i]);
	}
Exemple #6
0
        public override void CalcularMovimientos(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            MovAlfil(Tablero, Coordenadas, ListaBlanca, ListaNegra, Color);
            MovTorre(Tablero, Coordenadas, ListaBlanca, ListaNegra, Color);

            Tablero[Coordenadas.X, Coordenadas.Y].Img = 'r';
            Console.Clear();
            Console.WriteLine("  1 2 3 4 5 6 7 8");
            int    var    = 0;
            string letras = "ABCDEFGH";

            for (int f = 0; f < 8; f++)
            {
                Console.Write(letras[var].ToString() + " ");
                var++;
                for (int c = 0; c < 8; c++)
                {
                    if (Tablero[f, c].Img == 'X')
                    {
                        Coordenada MovPos = new Coordenada(f, c);

                        /*  MovPos.X = f;
                         * MovPos.Y = c;
                         */
                        if (Color == 'B')
                        {
                            ListaBlanca.Add(MovPos);
                        }
                        else if (Color == 'N')
                        {
                            ListaNegra.Add(MovPos);
                        }
                    }
                    Console.Write(Tablero[f, c].Img + " ");
                }
                Console.WriteLine();
            }
            Tablero[Coordenadas.X, Coordenadas.Y] = this;
        }
 /// <summary>
 /// LoadContent will be called once per game and is the place to load
 /// all of your content.
 /// </summary>
 protected override void LoadContent()
 {
     // Create a new SpriteBatch, which can be used to draw textures.
     spriteBatch = new SpriteBatch(GraphicsDevice);
     texture = this.Content.Load<Texture2D>("terminator");
     imgGanador = this.Content.Load<Texture2D>("ganaste");
     pieza = new Pieza[nPiezas,nPiezas];
     cortes = nPiezas;
     ganador = false;
     anchoCorte =  (int) (texture.Width / cortes);
     altoCorte =  (int) (texture.Height / cortes);
     generarRompecabezas ();
     mesclarPiezas ();
 }
Exemple #8
0
 public abstract void CalcularMovimientos(Pieza [,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color);
Exemple #9
0
        void UbicarRey(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            //Cada try/catch corresponde a un enroque, basicamente, si tiene una torre al rango, se modifican sus posiciones
            //Enroque largo************************************
            try
            {
                if (Tablero[Coordenadas.X, Coordenadas.Y - 3] is Torre && Tablero[Coordenadas.X, Coordenadas.Y - 3].Color == Color)
                {
                    Console.WriteLine("Desea Realizar un enroque? (s)Si / (n)No");
                    char Opcion = char.Parse(Console.ReadLine());

                    if (Opcion == 's')
                    {
                        Pieza torre = new Torre();
                        Pieza vacio = new PiezaVacia();
                        vacio.Img = '*';
                        Tablero[Coordenadas.X, Coordenadas.Y].Img = '*';
                        torre = Tablero[Coordenadas.X, Coordenadas.Y - 3];
                        Tablero[Coordenadas.X, Coordenadas.Y - 3]     = vacio;
                        Tablero[Coordenadas.X, Coordenadas.Y - 1]     = torre;
                        Tablero[Coordenadas.X, Coordenadas.Y - 1].Img = 'T';
                        Coordenadas.Y -= 2;
                    }
                    else
                    {
                    }
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X, Coordenadas.Y + 3] is Torre && Tablero[Coordenadas.X, Coordenadas.Y + 3].Color == Color)
                {
                    Console.WriteLine("Desea Realizar un enroque? (s)Si / (n)No");
                    char Opcionb = char.Parse(Console.ReadLine());

                    if (Opcionb == 's')
                    {
                        Pieza torre = new Torre();
                        Pieza vacio = new PiezaVacia();
                        vacio.Img = '*';
                        Tablero[Coordenadas.X, Coordenadas.Y].Img = '*';
                        torre = Tablero[Coordenadas.X, Coordenadas.Y + 3];
                        Tablero[Coordenadas.X, Coordenadas.Y + 3]     = vacio;
                        Tablero[Coordenadas.X, Coordenadas.Y + 1]     = torre;
                        Tablero[Coordenadas.X, Coordenadas.Y + 1].Img = 'T';
                        Coordenadas.Y += 2;
                    }
                    else
                    {
                    }
                }
            }
            catch (IndexOutOfRangeException) { }

            //Enroque corto*******************************

            try
            {
                if (Tablero[Coordenadas.X, Coordenadas.Y - 2] is Torre && Tablero[Coordenadas.X, Coordenadas.Y - 2].Color == Color)
                {
                    Console.WriteLine("Desea Realizar un enroque? (s)Si / (n)No");
                    char Opcion = char.Parse(Console.ReadLine());

                    if (Opcion == 's')
                    {
                        Pieza torre = new Torre();
                        Pieza vacio = new PiezaVacia();
                        vacio.Img = '*';
                        Tablero[Coordenadas.X, Coordenadas.Y].Img = '*';
                        torre = Tablero[Coordenadas.X, Coordenadas.Y - 2];
                        Tablero[Coordenadas.X, Coordenadas.Y - 2]     = vacio;
                        Tablero[Coordenadas.X, Coordenadas.Y - 1]     = torre;
                        Tablero[Coordenadas.X, Coordenadas.Y - 1].Img = 'T';
                        Coordenadas.Y -= 2;
                    }
                    else
                    {
                    }
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X, Coordenadas.Y + 2] is Torre && Tablero[Coordenadas.X, Coordenadas.Y + 2].Color == Color)
                {
                    Console.WriteLine("Desea Realizar un enroque? (s)Si / (n)No");
                    char Opcion = char.Parse(Console.ReadLine());

                    if (Opcion == 's')
                    {
                        Pieza torre = new Torre();
                        Pieza vacio = new PiezaVacia();
                        vacio.Img = '*';
                        Tablero[Coordenadas.X, Coordenadas.Y].Img = '*';
                        torre = Tablero[Coordenadas.X, Coordenadas.Y + 2];
                        Tablero[Coordenadas.X, Coordenadas.Y + 2]     = vacio;
                        Tablero[Coordenadas.X, Coordenadas.Y + 1]     = torre;
                        Tablero[Coordenadas.X, Coordenadas.Y + 1].Img = 'T';
                        Coordenadas.Y += 2;
                    }
                    else
                    {
                    }
                }
            }
            catch (IndexOutOfRangeException) { }

            // No enroque
            try
            {
                if (Tablero[Coordenadas.X - 1, Coordenadas.Y - 1].Img == '*' || Tablero[Coordenadas.X - 1, Coordenadas.Y - 1].Color != this.Color)
                {
                    Tablero[Coordenadas.X - 1, Coordenadas.Y - 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X - 1, Coordenadas.Y].Img == '*' || Tablero[Coordenadas.X - 1, Coordenadas.Y].Color != this.Color)
                {
                    Tablero[Coordenadas.X - 1, Coordenadas.Y].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X - 1, Coordenadas.Y + 1].Img == '*' || Tablero[Coordenadas.X - 1, Coordenadas.Y + 1].Color != this.Color)
                {
                    Tablero[Coordenadas.X - 1, Coordenadas.Y + 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X, Coordenadas.Y - 1].Img == '*' || Tablero[Coordenadas.X, Coordenadas.Y - 1].Color != this.Color)
                {
                    Tablero[Coordenadas.X, Coordenadas.Y - 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X, Coordenadas.Y + 1].Img == '*' || Tablero[Coordenadas.X, Coordenadas.Y + 1].Color != this.Color)
                {
                    Tablero[Coordenadas.X, Coordenadas.Y + 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X + 1, Coordenadas.Y - 1].Img == '*' || Tablero[Coordenadas.X + 1, Coordenadas.Y - 1].Color != this.Color)
                {
                    Tablero[Coordenadas.X + 1, Coordenadas.Y - 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X + 1, Coordenadas.Y].Img == '*' || Tablero[Coordenadas.X + 1, Coordenadas.Y].Color != this.Color)
                {
                    Tablero[Coordenadas.X + 1, Coordenadas.Y].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }
            try
            {
                if (Tablero[Coordenadas.X + 1, Coordenadas.Y + 1].Img == '*' || Tablero[Coordenadas.X + 1, Coordenadas.Y + 1].Color != this.Color)
                {
                    Tablero[Coordenadas.X + 1, Coordenadas.Y + 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            Tablero[Coordenadas.X, Coordenadas.Y].Img = 'R';
            int    var    = 0;
            string letras = "ABCDEFGH";

            Console.Clear();
            Console.WriteLine("  1 2 3 4 5 6 7 8");
            for (int f = 0; f < 8; f++)
            {
                Console.Write(letras[var].ToString() + " ");
                var++;
                for (int c = 0; c < 8; c++)
                {
                    if (Tablero[f, c].Img == 'X')
                    {
                        Coordenada MovPos = new Coordenada(f, c);

                        /*   MovPos.X = f;
                         * MovPos.Y = c;
                         */
                        if (Color == 'B')
                        {
                            ListaBlanca.Add(MovPos);
                        }
                        else if (Color == 'N')
                        {
                            ListaNegra.Add(MovPos);
                        }
                    }
                    Console.Write(Tablero[f, c].Img + " ");
                }
                Console.WriteLine();
            }
        }
Exemple #10
0
        public override void CalcularMovimientos(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            try
            {
                if (Tablero[Coordenadas.X - 1, Coordenadas.Y + 2].Color != this.Color || Tablero[Coordenadas.X - 1, Coordenadas.Y + 2].Img == '*')
                {
                    Tablero[Coordenadas.X - 1, Coordenadas.Y + 2].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X - 2, Coordenadas.Y + 1].Color != this.Color || Tablero[Coordenadas.X - 2, Coordenadas.Y + 1].Img == '*')
                {
                    Tablero[Coordenadas.X - 2, Coordenadas.Y + 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X - 1, Coordenadas.Y - 2].Color != this.Color || Tablero[Coordenadas.X - 1, Coordenadas.Y - 2].Img == '*')
                {
                    Tablero[Coordenadas.X - 1, Coordenadas.Y - 2].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X - 2, Coordenadas.Y - 1].Color != this.Color || Tablero[Coordenadas.X - 2, Coordenadas.Y - 1].Img == '*')
                {
                    Tablero[Coordenadas.X - 2, Coordenadas.Y - 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X + 1, Coordenadas.Y + 2].Color != this.Color || Tablero[Coordenadas.X + 1, Coordenadas.Y + 2].Img == '*')
                {
                    Tablero[Coordenadas.X + 1, Coordenadas.Y + 2].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X + 2, Coordenadas.Y + 1].Color != this.Color || Tablero[Coordenadas.X + 2, Coordenadas.Y + 1].Img == '*')
                {
                    Tablero[Coordenadas.X + 2, Coordenadas.Y + 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X + 1, Coordenadas.Y - 2].Color != this.Color || Tablero[Coordenadas.X + 1, Coordenadas.Y - 2].Img == '*')
                {
                    Tablero[Coordenadas.X + 1, Coordenadas.Y - 2].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            try
            {
                if (Tablero[Coordenadas.X + 2, Coordenadas.Y - 1].Color != this.Color || Tablero[Coordenadas.X + 2, Coordenadas.Y - 1].Img == '*')
                {
                    Tablero[Coordenadas.X + 2, Coordenadas.Y - 1].Img = 'X';
                }
            }
            catch (IndexOutOfRangeException) { }

            Tablero[Coordenadas.X, Coordenadas.Y].Img = 'C';
            Console.Clear();
            Console.WriteLine("  1 2 3 4 5 6 7 8");
            int    var    = 0;
            string letras = "ABCDEFGH";

            for (int f = 0; f < 8; f++)
            {
                Console.Write(letras[var].ToString() + " ");
                var++;
                for (int c = 0; c < 8; c++)
                {
                    if (Tablero[f, c].Img == 'X')
                    {
                        Coordenada MovPos = new Coordenada(f, c);

                        /* MovPos.X = f;
                         * MovPos.Y = c;
                         */
                        if (Color == 'B')
                        {
                            ListaBlanca.Add(MovPos);
                        }
                        else if (Color == 'N')
                        {
                            ListaNegra.Add(MovPos);
                        }
                    }
                    Console.Write(Tablero[f, c].Img + " ");
                }
                Console.WriteLine();
            }
            Tablero[Coordenadas.X, Coordenadas.Y] = this;
        }
Exemple #11
0
 public override void CalcularMovimientos(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
 {
 }
Exemple #12
0
 public Tablero()
 {
     this.tablero = new Pieza[8, 8];
 }
Exemple #13
0
 public Tablero(int lineas, int columnas)
 {
     this.lineas   = lineas;
     this.columnas = columnas;
     piezas        = new Pieza[lineas, columnas];
 }
Exemple #14
0
        //Esto recibe al tablero, ambas listas, y el color de la pieza que se esta poniendo, tambien la posicion donde se va a poner a la misma
        public override void CalcularMovimientos(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            //Estas varibles son para que el alfil pueda marcar sus diagonales progresivamente
            int VarX1 = 1;
            int VarX2 = 1;
            int VarX3 = 1;
            int VarX4 = 1;
            int VarY1 = 1;
            int VarY2 = 1;
            int VarY3 = 1;
            int VarY4 = 1;

            //Estas 4 variables, cuando se vuelven true, evitan que el alfin siga marcando posibles posiciones en una diagonal
            bool BlockUL = false; //Arriba Izquierda
            bool BlockDL = false; //Abajo Izquierda
            bool BlockUR = false; //Arriba Derecha
            bool BlockDR = false; //Abajo Derecha


            for (int i = 0; i < 7; i++)
            { //Uso try y catch para marca, asi en caso de que el alfil intente marcar fuera del array no salte un error
                //sino que deja de marcar (como si fuera un limitador), cada try/catch corresponde a una diagonal
                try
                {
                    if (Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img == '*' && BlockDR == false)
                    {
                        Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img != '*' && Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Color == this.Color)
                    {
                        BlockDR = true;
                    }
                    else if (Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img != '*' && Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Color != this.Color)
                    {
                        BlockDR = true;
                        Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };


                try
                {
                    if (Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img == '*' && BlockUR == false)
                    {
                        Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img != '*' && Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Color == this.Color)
                    {
                        BlockUR = true;
                    }
                    else if (Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img != '*' && Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Color != this.Color)
                    {
                        BlockUR = true;
                        Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };


                try
                {
                    if (Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img == '*' && BlockDL == false)
                    {
                        Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img != '*' && Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Color == this.Color)
                    {
                        BlockDL = true;
                    }
                    else if (Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img != '*' && Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Color != this.Color)
                    {
                        BlockDL = true;
                        Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };

                try
                {
                    if (Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img == '*' && BlockUL == false)
                    {
                        Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img != '*' && Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Color == this.Color)
                    {
                        BlockUL = true;
                    }
                    else if (Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img != '*' && Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Color != this.Color)
                    {
                        BlockUL = true;
                        Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };

                VarX1++;
                VarY1++;

                VarX2++;
                VarY2++;

                VarX3++;
                VarY3++;

                VarX4++;
                VarY4++;
            }
            //Por ultimo muestra el tablero con los posibles movimientos marcados con X
            //Al salir de esta funcion, en el main, el tablero borra las X y solo muestra la pieza
            Tablero[Coordenadas.X, Coordenadas.Y].Img = 'A';
            Console.Clear();
            Console.WriteLine("  1 2 3 4 5 6 7 8");
            int    var    = 0;
            string letras = "ABCDEFGH";

            for (int f = 0; f < 8; f++)
            {
                Console.Write(letras[var].ToString() + " ");
                var++;
                for (int c = 0; c < 8; c++)
                {
                    //Como el alfil marco sus posibles movimientos con X, esto recorre el tablero y si es una X lo agrega
                    //A la lista de posibles movimientos, obviamente dependiendo del color del alfil va a una lista u otra
                    if (Tablero[f, c].Img == 'X')
                    {
                        Coordenada MovPos = new Coordenada(f, c);

                        /*  MovPos.X = f;
                         * MovPos.Y = c;
                         */
                        if (Color == 'B')
                        {
                            ListaBlanca.Add(MovPos);
                        }
                        else if (Color == 'N')
                        {
                            ListaNegra.Add(MovPos);
                        }
                    }
                    Console.Write(Tablero[f, c].Img + " ");
                }
                Console.WriteLine();
            }
            Tablero[Coordenadas.X, Coordenadas.Y] = this; //Esto es para que en el tablero, cambie la pieza por esta
        }
Exemple #15
0
        void MovTorre(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            int  VarX   = 1;
            int  VarY   = 1;
            bool BlockD = false; //Abajo
            bool BlockU = false; //Arriba
            bool BlockL = false; //Izquierda
            bool BlockR = false; //Derecha


            for (int i = 0; i < 8; i++)
            {
                try
                {
                    if (Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img == '*' && BlockD == false)
                    {
                        Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img != '*' && this.Color == Tablero[Coordenadas.X + VarX, Coordenadas.Y].Color)
                    {
                        BlockD = true;
                    }
                    else if (Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img != '*' && this.Color != Tablero[Coordenadas.X + VarX, Coordenadas.Y].Color)
                    {
                        Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img = 'X';
                        BlockD = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                try
                {
                    if (Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img == '*' && BlockU == false)
                    {
                        Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img = 'X';
                    }
                    else
                    if (Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img != '*' && Tablero[Coordenadas.X - VarX, Coordenadas.Y].Color == this.Color)
                    {
                        BlockU = true;
                    }
                    else if (Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img != '*' && Tablero[Coordenadas.X - VarX, Coordenadas.Y].Color != this.Color)
                    {
                        Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img = 'X';
                        BlockU = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                try
                {
                    if (Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img == '*' && BlockR == false)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y + VarY].Color == this.Color)
                    {
                        BlockR = true;
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y + VarY].Color != this.Color)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img = 'X';
                        BlockR = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                try
                {
                    if (Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img == '*' && BlockL == false)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y - VarY].Color == this.Color)
                    {
                        BlockL = true;
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y - VarY].Color != this.Color)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img = 'X';
                        BlockL = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                Tablero[Coordenadas.X, Coordenadas.Y].Img = 'T';
                VarX++;
                VarY++;
            }
        }
Exemple #16
0
        void MovAlfil(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            int VarX1 = 1;
            int VarX2 = 1;
            int VarX3 = 1;
            int VarX4 = 1;
            int VarY1 = 1;
            int VarY2 = 1;
            int VarY3 = 1;
            int VarY4 = 1;

            bool BlockUL = false; //Arriba Izquierda
            bool BlockDL = false; //Abajo Izquierda
            bool BlockUR = false; //Arriba Derecha
            bool BlockDR = false; //Abajo Derecha


            for (int i = 0; i < 7; i++)
            {
                try
                {
                    if (Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img == '*' && BlockDR == false)
                    {
                        Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img != '*' && Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Color == this.Color)
                    {
                        BlockDR = true;
                    }
                    else if (Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img != '*' && Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Color != this.Color)
                    {
                        BlockDR = true;
                        Tablero[Coordenadas.X + VarX1, Coordenadas.Y + VarY1].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };


                try
                {
                    if (Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img == '*' && BlockUR == false)
                    {
                        Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img != '*' && Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Color == this.Color)
                    {
                        BlockUR = true;
                    }
                    else if (Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img != '*' && Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Color != this.Color)
                    {
                        BlockUR = true;
                        Tablero[Coordenadas.X - VarX2, Coordenadas.Y + VarY2].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };


                try
                {
                    if (Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img == '*' && BlockDL == false)
                    {
                        Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img != '*' && Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Color == this.Color)
                    {
                        BlockDL = true;
                    }
                    else if (Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img != '*' && Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Color != this.Color)
                    {
                        BlockDL = true;
                        Tablero[Coordenadas.X + VarX3, Coordenadas.Y - VarY3].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };

                try
                {
                    if (Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img == '*' && BlockUL == false)
                    {
                        Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img != '*' && Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Color == this.Color)
                    {
                        BlockUL = true;
                    }
                    else if (Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img != '*' && Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Color != this.Color)
                    {
                        BlockUL = true;
                        Tablero[Coordenadas.X - VarX4, Coordenadas.Y - VarY4].Img = 'X';
                    }
                }
                catch (IndexOutOfRangeException) { };

                VarX1++;
                VarY1++;

                VarX2++;
                VarY2++;

                VarX3++;
                VarY3++;

                VarX4++;
                VarY4++;
            }
        }
	/**
	 * Coloca todas las figuras en el tablero
	 */
	private void SpawnTodas(){
		//Crea la matriz de movimientos de colocar piezas
		//Para elegir la posicion de las piezas rojas
		for (int i = 0; i < 10; i++) {
			for (int j = 4; j < 8; j++) {
				rRojo [i, j] = true;				
			}
		}
		/*Para elegir la posicion de las piezas azules*/
		for (int i = 0; i < 10; i++) {
			for (int j = 10; j < 14; j++) {
				rAzul [i, j] = true;				
			}
		}


		figurasActivas = new List<GameObject>();
		Piezas = new Pieza[10, 18];
		//Spawn rojas
		SpawnFiguras (12, 0, 0);		//1 bandera

		for(int i = 1; i<7; i++)		//6 bombas
			SpawnFiguras (13, i, 0);

		for(int i = 7; i<10; i++)		//3 comandantes
			SpawnFiguras (15, i, 0);

		for(int i = 0; i<8; i++)		//8 exploradores
			SpawnFiguras (18, i, 1);

		SpawnFiguras (16, 8, 1);		//2 coroneles
		SpawnFiguras (16, 9, 1);

		for(int i = 0; i<5; i++)		//5 minadores
			SpawnFiguras (21, i, 2);

		for(int i = 5; i<9; i++)		//4 sargentos
			SpawnFiguras (22, i, 2);

		SpawnFiguras (17, 9, 2);		//1 espia

		for(int i = 0; i<4; i++)		//4 tenientes
			SpawnFiguras (23, i, 3);
		for(int i = 4; i<8; i++)		//4 capitanes
			SpawnFiguras (14, i, 3);

		SpawnFiguras (19, 8, 3);		//1 general

		SpawnFiguras (20, 9, 3);		//1 mariscal


		//Spawn azules
		SpawnFiguras (0, 0, 17);		//1 bandera

		for(int i = 1; i<7; i++)		//6 bombas
			SpawnFiguras (1, i, 17);

		for(int i = 7; i<10; i++)		//3 comandantes
			SpawnFiguras (3, i, 17);

		for(int i = 0; i<8; i++)		//8 exploradores
			SpawnFiguras (6, i, 16);

		SpawnFiguras (4, 8, 16);		//2 coroneles
		SpawnFiguras (4, 9, 16);

		for(int i = 0; i<5; i++)		//5 minadores
			SpawnFiguras (9, i, 15);

		for(int i = 5; i<9; i++)		//4 sargentos
			SpawnFiguras (10, i, 15);

		SpawnFiguras (5, 9, 15);		//1 espia

		for(int i = 0; i<4; i++)		//4 tenientes
			SpawnFiguras (11, i, 14);
		
		for(int i = 4; i<8; i++)		//4 capitanes
			SpawnFiguras (2, i, 14);

		SpawnFiguras (7, 8, 14);		//1 general

		SpawnFiguras (8, 9, 14);		//1 mariscal

		//Inicializa y gestiona las imagenes de cada pieza, para poder hacerlas desaparecer despues
		GameObject[] arrayAddLista = GameObject.FindGameObjectsWithTag ("Plano Azul");
		for(int i = 0; i < arrayAddLista.Length; i++)
			planosFigAzules.Add(arrayAddLista[i]);
		arrayAddLista = GameObject.FindGameObjectsWithTag ("Plano Rojo");
		for(int i = 0; i < arrayAddLista.Length; i++)
			planosFigRojos.Add(arrayAddLista[i]);
	}
Exemple #18
0
        public override void CalcularMov(Pieza[,] tablero, Movimiento movimiento, List <Movimiento> listas)
        {
            MovimientosDePieza = new List <Movimiento>();
            int n = 1;

            if (movimiento.X + n < 7 && movimiento.Y + n < 7)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X + n, movimiento.Y + n] is Vacio)
                {
                    tablero[movimiento.X + n, movimiento.Y + n].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X + n;
                    ParaLista.Y = movimiento.Y + n;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X + n, movimiento.Y + n].color == color)
                {
                }
                else if (tablero[movimiento.X + n, movimiento.Y + n].color != color)
                {
                    tablero[movimiento.X + n, movimiento.Y + n].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X + n;
                    ParaLista.Y    = movimiento.Y + n;
                    ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y + n].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            } //listo
            if (movimiento.X - n >= 0 && movimiento.Y - n >= 0)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X - n, movimiento.Y - n] is Vacio)
                {
                    tablero[movimiento.X - n, movimiento.Y - n].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X - n;
                    ParaLista.Y = movimiento.Y - n;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X - n, movimiento.Y - n].color == color)
                {
                }
                else if (tablero[movimiento.X - n, movimiento.Y - n].color != color)
                {
                    tablero[movimiento.X - n, movimiento.Y - n].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X - n;
                    ParaLista.Y    = movimiento.Y - n;
                    ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y - n].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            } //listo
            if (movimiento.X - n >= 0 && movimiento.Y + n < 7)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X - n, movimiento.Y + n] is Vacio)
                {
                    tablero[movimiento.X - n, movimiento.Y + n].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X - n;
                    ParaLista.Y = movimiento.Y + n;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X - n, movimiento.Y + n].color == color)
                {
                }
                else if (tablero[movimiento.X - n, movimiento.Y + n].color != color)
                {
                    tablero[movimiento.X - n, movimiento.Y + n].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X - n;
                    ParaLista.Y    = movimiento.Y + n;
                    ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y + n].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                    ;
                }
            }
            if (movimiento.X + n < 7 && movimiento.Y - n >= 0)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X + n, movimiento.Y - n] is Vacio)
                {
                    tablero[movimiento.X + n, movimiento.Y - n].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X + n;
                    ParaLista.Y = movimiento.Y - n;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X + n, movimiento.Y - n].color == color)
                {
                }
                else if (tablero[movimiento.X + n, movimiento.Y - n].color != color)
                {
                    tablero[movimiento.X + n, movimiento.Y - n].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X + n;
                    ParaLista.Y    = movimiento.Y - n;
                    ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y - n].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            } //listo
            if (movimiento.X + n < 7)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X + n, movimiento.Y] is Vacio)
                {
                    tablero[movimiento.X + n, movimiento.Y].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X + n;
                    ParaLista.Y = movimiento.Y;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X + n, movimiento.Y].color == color)
                {
                }
                else if (tablero[movimiento.X + n, movimiento.Y].color != color)
                {
                    tablero[movimiento.X + n, movimiento.Y].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X + n;
                    ParaLista.Y    = movimiento.Y;
                    ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            }
            if (movimiento.X - n >= 0)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X - n, movimiento.Y] is Vacio)
                {
                    tablero[movimiento.X - n, movimiento.Y].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X - n;
                    ParaLista.Y = movimiento.Y;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X - n, movimiento.Y].color == color)
                {
                }
                else if (tablero[movimiento.X - n, movimiento.Y].color != color)
                {
                    tablero[movimiento.X - n, movimiento.Y].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X - n;
                    ParaLista.Y    = movimiento.Y;
                    ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            }
            if (movimiento.Y + n < 7)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X, movimiento.Y + n] is Vacio)
                {
                    tablero[movimiento.X, movimiento.Y + n].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X;
                    ParaLista.Y = movimiento.Y + n;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X, movimiento.Y + n].color == color)
                {
                }
                else if (tablero[movimiento.X, movimiento.Y + n].color != color)
                {
                    tablero[movimiento.X, movimiento.Y + n].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X;
                    ParaLista.Y    = movimiento.Y + n;
                    ParaLista.Peso = tablero[movimiento.X, movimiento.Y + n].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            }
            if (movimiento.Y - n >= 0)
            {
                Movimiento ParaLista = new Movimiento();
                if (tablero[movimiento.X, movimiento.Y - n] is Vacio)
                {
                    tablero[movimiento.X, movimiento.Y - n].Simbolo = Simbolo;
                    ParaLista.X = movimiento.X;
                    ParaLista.Y = movimiento.Y - n;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
                else if (tablero[movimiento.X, movimiento.Y - n].color == color)
                {
                }
                else if (tablero[movimiento.X, movimiento.Y - n].color != color)
                {
                    tablero[movimiento.X, movimiento.Y - n].Simbolo = Simbolo;
                    ParaLista.X    = movimiento.X;
                    ParaLista.Y    = movimiento.Y - n;
                    ParaLista.Peso = tablero[movimiento.X, movimiento.Y - n].Valor;
                    listas.Add(ParaLista);
                    MovimientosDePieza.Add(ParaLista);
                }
            }
            if (tablero[movimiento.X, movimiento.Y].color == 1)
            {
                if (movimiento.X == 7 && movimiento.Y == 4)
                {
                    Movimiento ParaLista = new Movimiento();
                    if (tablero[7, 7] is Torre)
                    {
                        tablero[7, 7].Simbolo = this.Simbolo;
                        ParaLista.X           = 7;
                        ParaLista.Y           = 7;
                        listas.Add(ParaLista);
                    }
                    if (tablero[0, 7] is Torre)
                    {
                        tablero[0, 7].Simbolo = Simbolo;
                        ParaLista.X           = 0;
                        ParaLista.Y           = 7;
                        listas.Add(ParaLista);
                    }
                }
            } // negro
            if (tablero[movimiento.X, movimiento.Y].color == 2)
            {
                if (movimiento.X == 0 && movimiento.Y == 4)
                {
                    Movimiento ParaLista = new Movimiento();
                    if (tablero[7, 0] is Torre)
                    {
                        tablero[7, 0].Simbolo = this.Simbolo;
                        ParaLista.X           = 7;
                        ParaLista.Y           = 0;
                        listas.Add(ParaLista);
                    }
                    if (tablero[0, 0] is Torre)
                    {
                        tablero[0, 0].Simbolo = Simbolo;
                        ParaLista.X           = 0;
                        ParaLista.Y           = 0;
                        listas.Add(ParaLista);
                    }
                }
            } // negro
            OrdenarMovs(MovimientosDePieza);
        }
Exemple #19
0
 public virtual void CalcularMov(Pieza[,] tablero, Movimiento movimiento, List <Movimiento> listas)
 {
 }
Exemple #20
0
        static void ActualizarMovimientos(List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, Pieza[,] Tablero)
        {
            ListaBlanca.Clear(); //Limpia ambas listas de los movimientos viejos los cuales pudieron haber cambiado
            ListaNegra.Clear();

            foreach (Pieza p in Tablero)
            {
                //Recorre el tablero y a cada pieza le dice que calcule sus movimientos devuelta
                p.CalcularMovimientos(Tablero, p.Posicion, MovPosiblesBlancos, MovPosiblesNegros, p.Color);
            }
        }
Exemple #21
0
        public override void CalcularMov(Pieza[,] tablero, Movimiento movimiento, List <Movimiento> listas)
        {
            MovimientosDePieza = new List <Movimiento>();

            if (tablero[movimiento.X, movimiento.Y].color == 1)
            {
                if (movimiento.X == 6)
                {
                    for (int n = 1; n < 4; n++)
                    {
                        if (movimiento.X - n >= 0 && movimiento.Y + 1 < 8)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X - n, movimiento.Y + 1] is Vacio)
                            {
                                tablero[movimiento.X - n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X - n;
                                ParaLista.Y = movimiento.Y + 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y + 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y + 1].color != color)
                            {
                                tablero[movimiento.X - n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X - n;
                                ParaLista.Y    = movimiento.Y + 1;
                                ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y + 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (movimiento.X - n >= 0 && movimiento.Y - 1 >= 0)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X - n, movimiento.Y - 1] is Vacio)
                            {
                                tablero[movimiento.X - n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X - n;
                                ParaLista.Y = movimiento.Y - 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y - 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y - 1].color != color)
                            {
                                tablero[movimiento.X - n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X - n;
                                ParaLista.Y    = movimiento.Y - 1;
                                ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y - 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (n < 3)
                        {
                            if (movimiento.X - n >= 0)
                            {
                                Movimiento ParaLista = new Movimiento();
                                if (tablero[movimiento.X - n, movimiento.Y] is Vacio)
                                {
                                    tablero[movimiento.X - n, movimiento.Y].Simbolo = Simbolo;
                                    ParaLista.X = movimiento.X - n;
                                    ParaLista.Y = movimiento.Y;
                                    listas.Add(ParaLista);
                                    MovimientosDePieza.Add(ParaLista);
                                }
                                else if (tablero[movimiento.X - n, movimiento.Y].color == color)
                                {
                                    break;
                                }
                                else if (tablero[movimiento.X - n, movimiento.Y].color != color)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    for (int n = 1; n < 3; n++)
                    {
                        if (movimiento.X - n >= 0 && movimiento.Y + 1 < 8)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X - n, movimiento.Y + 1] is Vacio)
                            {
                                tablero[movimiento.X - n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X - n;
                                ParaLista.Y = movimiento.Y + 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y + 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y + 1].color != color)
                            {
                                tablero[movimiento.X - n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X - n;
                                ParaLista.Y    = movimiento.Y + 1;
                                ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y + 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                                ;
                            }
                        }
                        if (movimiento.X - n >= 0 && movimiento.Y - 1 >= 0)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X - n, movimiento.Y - 1] is Vacio)
                            {
                                tablero[movimiento.X - n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X - n;
                                ParaLista.Y = movimiento.Y - 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y - 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X - n, movimiento.Y - 1].color != color)
                            {
                                tablero[movimiento.X - n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X - n;
                                ParaLista.Y    = movimiento.Y - 1;
                                ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y - 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (n < 2)
                        {
                            if (movimiento.X - n >= 0)
                            {
                                Movimiento ParaLista = new Movimiento();
                                if (tablero[movimiento.X - n, movimiento.Y] is Vacio)
                                {
                                    tablero[movimiento.X - n, movimiento.Y].Simbolo = Simbolo;
                                    ParaLista.X = movimiento.X - n;
                                    ParaLista.Y = movimiento.Y;
                                    listas.Add(ParaLista);
                                    MovimientosDePieza.Add(ParaLista);
                                }
                                else if (tablero[movimiento.X - n, movimiento.Y].color == color)
                                {
                                    break;
                                }
                                else if (tablero[movimiento.X - n, movimiento.Y].color != color)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            } // negro

            if (tablero[movimiento.X, movimiento.Y].color == 2)
            {
                if (movimiento.X == 1)
                {
                    for (int n = 1; n < 4; n++)
                    {
                        if (movimiento.X + n < 8 && movimiento.Y + 1 < 8)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X + n, movimiento.Y + 1] is Vacio)
                            {
                                tablero[movimiento.X + n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X + n;
                                ParaLista.Y = movimiento.Y + 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y + 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y + 1].color != color)
                            {
                                tablero[movimiento.X + n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X + n;
                                ParaLista.Y    = movimiento.Y + 1;
                                ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y + 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (movimiento.X + n < 8 && movimiento.Y - 1 >= 0)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X + n, movimiento.Y - 1] is Vacio)
                            {
                                tablero[movimiento.X + n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X + n;
                                ParaLista.Y = movimiento.Y - 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y - 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y - 1].color != color)
                            {
                                tablero[movimiento.X + n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X + n;
                                ParaLista.Y    = movimiento.Y - 1;
                                ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y - 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (n < 3)
                        {
                            if (movimiento.X + n >= 0)
                            {
                                Movimiento ParaLista = new Movimiento();
                                if (tablero[movimiento.X + n, movimiento.Y] is Vacio)
                                {
                                    tablero[movimiento.X + n, movimiento.Y].Simbolo = Simbolo;
                                    ParaLista.X = movimiento.X + n;
                                    ParaLista.Y = movimiento.Y;
                                    listas.Add(ParaLista);
                                    MovimientosDePieza.Add(ParaLista);
                                }
                                else if (tablero[movimiento.X + n, movimiento.Y].color == color)
                                {
                                    break;
                                }
                                else if (tablero[movimiento.X + n, movimiento.Y].color != color)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
                else
                {
                    for (int n = 1; n < 3; n++)
                    {
                        if (movimiento.X + n < 8 && movimiento.Y + 1 < 8)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X + n, movimiento.Y + 1] is Vacio)
                            {
                                tablero[movimiento.X + n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X + n;
                                ParaLista.Y = movimiento.Y + 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y + 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y + 1].color != color)
                            {
                                tablero[movimiento.X + n, movimiento.Y + 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X + n;
                                ParaLista.Y    = movimiento.Y + 1;
                                ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y + 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (movimiento.X + n < 8 && movimiento.Y - 1 >= 0)
                        {
                            Movimiento ParaLista = new Movimiento();
                            if (tablero[movimiento.X + n, movimiento.Y - 1] is Vacio)
                            {
                                tablero[movimiento.X + n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X = movimiento.X + n;
                                ParaLista.Y = movimiento.Y - 1;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y - 1].color == color)
                            {
                            }
                            else if (tablero[movimiento.X + n, movimiento.Y - 1].color != color)
                            {
                                tablero[movimiento.X + n, movimiento.Y - 1].Simbolo = Simbolo;
                                ParaLista.X    = movimiento.X + n;
                                ParaLista.Y    = movimiento.Y - 1;
                                ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y - 1].Valor;
                                listas.Add(ParaLista);
                                MovimientosDePieza.Add(ParaLista);
                            }
                        }
                        if (n < 2)
                        {
                            if (movimiento.X + n >= 0)
                            {
                                Movimiento ParaLista = new Movimiento();
                                if (tablero[movimiento.X + n, movimiento.Y] is Vacio)
                                {
                                    tablero[movimiento.X + n, movimiento.Y].Simbolo = Simbolo;
                                    ParaLista.X = movimiento.X + n;
                                    ParaLista.Y = movimiento.Y;
                                    listas.Add(ParaLista);
                                    MovimientosDePieza.Add(ParaLista);
                                }
                                else if (tablero[movimiento.X + n, movimiento.Y].color == color)
                                {
                                    break;
                                }
                                else if (tablero[movimiento.X + n, movimiento.Y].color != color)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            OrdenarMovs(MovimientosDePieza);
        }
Exemple #22
0
 public override void CalcularMov(Pieza[,] tablero, Movimiento movimiento, List <Movimiento> listas)
 {
     MovimientosDePieza = new List <Movimiento>();
     for (int n = 1; n < 8; n++)
     {
         Movimiento ParaLista = new Movimiento();
         if (movimiento.X + n < 8 && movimiento.Y + n < 8)
         {
             if (tablero[movimiento.X + n, movimiento.Y + n] is Vacio)
             {
                 tablero[movimiento.X + n, movimiento.Y + n].Simbolo = Simbolo;
                 ParaLista.X = movimiento.X + n;
                 ParaLista.Y = movimiento.Y + n;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
             }
             else if (tablero[movimiento.X + n, movimiento.Y + n].color == color)
             {
                 break;
             }
             else if (tablero[movimiento.X + n, movimiento.Y + n].color != color)
             {
                 tablero[movimiento.X + n, movimiento.Y + n].Simbolo = Simbolo;
                 ParaLista.X    = movimiento.X + n;
                 ParaLista.Y    = movimiento.Y + n;
                 ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y + n].Valor;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
                 break;
             }
         }
     } //listo
     for (int n = 1; n < 8; n++)
     {
         if (movimiento.X - n >= 0 && movimiento.Y - n >= 0)
         {
             Movimiento ParaLista = new Movimiento();
             if (tablero[movimiento.X - n, movimiento.Y - n] is Vacio)
             {
                 tablero[movimiento.X - n, movimiento.Y - n].Simbolo = Simbolo;
                 ParaLista.X = movimiento.X - n;
                 ParaLista.Y = movimiento.Y - n;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
             }
             else if (tablero[movimiento.X - n, movimiento.Y - n].color == color)
             {
                 break;
             }
             else if (tablero[movimiento.X - n, movimiento.Y - n].color != color)
             {
                 tablero[movimiento.X - n, movimiento.Y - n].Simbolo = Simbolo;
                 ParaLista.X    = movimiento.X - n;
                 ParaLista.Y    = movimiento.Y - n;
                 ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y - n].Valor;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
                 break;
             }
         }
     } //listo
     for (int n = 1; n < 8; n++)
     {
         if (movimiento.X - n >= 0 && movimiento.Y + n < 8)
         {
             Movimiento ParaLista = new Movimiento();
             if (tablero[movimiento.X - n, movimiento.Y + n] is Vacio)
             {
                 tablero[movimiento.X - n, movimiento.Y + n].Simbolo = Simbolo;
                 ParaLista.X = movimiento.X - n;
                 ParaLista.Y = movimiento.Y + n;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
             }
             else if (tablero[movimiento.X - n, movimiento.Y + n].color == color)
             {
                 break;
             }
             else if (tablero[movimiento.X - n, movimiento.Y + n].color != color)
             {
                 tablero[movimiento.X - n, movimiento.Y + n].Simbolo = Simbolo;
                 ParaLista.X    = movimiento.X - n;
                 ParaLista.Y    = movimiento.Y + n;
                 ParaLista.Peso = tablero[movimiento.X - n, movimiento.Y + n].Valor;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
                 break;
             }
         }
     } //listo
     for (int n = 1; n < 8; n++)
     {
         if (movimiento.X + n < 8 && movimiento.Y - n >= 0)
         {
             Movimiento ParaLista = new Movimiento();
             if (tablero[movimiento.X + n, movimiento.Y - n] is Vacio)
             {
                 tablero[movimiento.X + n, movimiento.Y - n].Simbolo = Simbolo;
                 ParaLista.X = movimiento.X + n;
                 ParaLista.Y = movimiento.Y - n;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
             }
             else if (tablero[movimiento.X + n, movimiento.Y - n].color == color)
             {
                 break;
             }
             else if (tablero[movimiento.X + n, movimiento.Y - n].color != color)
             {
                 tablero[movimiento.X + n, movimiento.Y - n].Simbolo = Simbolo;
                 ParaLista.X    = movimiento.X + n;
                 ParaLista.Y    = movimiento.Y - n;
                 ParaLista.Peso = tablero[movimiento.X + n, movimiento.Y - n].Valor;
                 listas.Add(ParaLista);
                 MovimientosDePieza.Add(ParaLista);
                 break;
             }
         }
     } //listo
     OrdenarMovs(MovimientosDePieza);
 }
Exemple #23
0
        public override void CalcularMovimientos(Pieza[,] Tablero, Coordenada Coordenadas, List <Coordenada> ListaBlanca, List <Coordenada> ListaNegra, char Color)
        {
            int  VarX   = 1;
            int  VarY   = 1;
            bool BlockD = false; //Abajo
            bool BlockU = false; //Arriba
            bool BlockL = false; //Izquierda
            bool BlockR = false; //Derecha


            for (int i = 0; i < 8; i++)
            {
                try
                {
                    if (Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img == '*' && BlockD == false)
                    {
                        Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img != '*' && this.Color == Tablero[Coordenadas.X + VarX, Coordenadas.Y].Color)
                    {
                        BlockD = true;
                    }
                    else if (Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img != '*' && this.Color != Tablero[Coordenadas.X + VarX, Coordenadas.Y].Color)
                    {
                        Tablero[Coordenadas.X + VarX, Coordenadas.Y].Img = 'X';
                        BlockD = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                try
                {
                    if (Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img == '*' && BlockU == false)
                    {
                        Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img = 'X';
                    }
                    else
                    if (Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img != '*' && Tablero[Coordenadas.X - VarX, Coordenadas.Y].Color == this.Color)
                    {
                        BlockU = true;
                    }
                    else if (Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img != '*' && Tablero[Coordenadas.X - VarX, Coordenadas.Y].Color != this.Color)
                    {
                        Tablero[Coordenadas.X - VarX, Coordenadas.Y].Img = 'X';
                        BlockU = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                try
                {
                    if (Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img == '*' && BlockR == false)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y + VarY].Color == this.Color)
                    {
                        BlockR = true;
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y + VarY].Color != this.Color)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y + VarY].Img = 'X';
                        BlockR = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                try
                {
                    if (Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img == '*' && BlockL == false)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img = 'X';
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y - VarY].Color == this.Color)
                    {
                        BlockL = true;
                    }
                    else if (Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img != '*' && Tablero[Coordenadas.X, Coordenadas.Y - VarY].Color != this.Color)
                    {
                        Tablero[Coordenadas.X, Coordenadas.Y - VarY].Img = 'X';
                        BlockL = true;
                    }
                }
                catch (IndexOutOfRangeException) { }

                Tablero[Coordenadas.X, Coordenadas.Y].Img = 'T';
                VarX++;
                VarY++;
            }

            Console.Clear();
            Console.WriteLine("  1 2 3 4 5 6 7 8");
            int    var    = 0;
            string letras = "ABCDEFGH";

            for (int f = 0; f < 8; f++)
            {
                Console.Write(letras[var].ToString() + " ");
                var++;
                for (int c = 0; c < 8; c++)
                {
                    if (Tablero[f, c].Img == 'X')
                    {
                        Coordenada MovPos = new Coordenada(f, c);

                        /*  MovPos.X = f;
                         * MovPos.Y = c;
                         */
                        if (Color == 'B')
                        {
                            ListaBlanca.Add(MovPos);
                        }
                        else if (Color == 'N')
                        {
                            ListaNegra.Add(MovPos);
                        }
                    }
                    Console.Write(Tablero[f, c].Img + " ");
                }
                Console.WriteLine();
            }
            Tablero[Coordenadas.X, Coordenadas.Y] = this;
        }