} //Crear un array normal de piezas static void CrearTableroLeyendo() { for (int f = 0; f < 8; f++) { for (int c = 0; c < 8; c++) { Tablero[f, c] = new PiezaVacia(); } } foreach (string s in Text) { Pieza p = null; int x = new int(); int y = new int(); if (s[0] == 'R') { p = new Rey(); } else if (s[0] == 'A') { p = new Alfil(); } else if (s[0] == 'C') { p = new Caballo(); } else if (s[0] == 'r') { p = new Reina(); } else if (s[0] == 'P') { p = new Peon(); } else if (s[0] == 'T') { p = new Torre(); } else if (s[0] == '*') { p = new PiezaVacia(); } char n = s[1]; if (n == 'a') { x = 0; } else if (n == 'b') { x = 1; } else if (n == 'c') { x = 2; } else if (n == 'd') { x = 3; } else if (n == 'e') { x = 4; } else if (n == 'f') { x = 5; } else if (n == 'g') { x = 6; } else if (n == 'h') { x = 7; } if (s[2] == '1') { y = 0; } else if (s[2] == '2') { y = 1; } else if (s[2] == '3') { y = 2; } else if (s[2] == '4') { y = 3; } else if (s[2] == '5') { y = 4; } else if (s[2] == '6') { y = 5; } else if (s[2] == '7') { y = 6; } else if (s[2] == '8') { y = 7; } p.Color = s[3]; p.Posicion = new Coordenada(x, y); Tablero[x, y] = p; } }
static void CrearTablero() { for (int f = 0; f < 8; f++) { for (int c = 0; c < 8; c++) { Tablero[f, c] = new PiezaVacia(); } } for (int i = 0; i < 8; i++) { Tablero[1, i] = new Peon(); Tablero[1, i].Color = 'N'; Tablero[6, i] = new Peon(); Tablero[6, i].Color = 'B'; } //Peones Tablero[0, 0] = new Torre(); Tablero[0, 0].Color = 'N'; Tablero[0, 7] = Tablero[0, 0]; Tablero[7, 0] = new Torre(); Tablero[7, 0].Color = 'B'; Tablero[7, 7] = Tablero[7, 0]; Tablero[0, 6] = new Caballo(); Tablero[0, 6].Color = 'N'; Tablero[0, 1] = Tablero[0, 6]; Tablero[7, 6] = new Caballo(); Tablero[7, 6].Color = 'B'; Tablero[7, 1] = Tablero[7, 6]; Tablero[0, 5] = new Alfil(); Tablero[0, 5].Color = 'N'; Tablero[0, 2] = Tablero[0, 5]; Tablero[7, 5] = new Alfil(); Tablero[7, 5].Color = 'B'; Tablero[7, 2] = Tablero[7, 5]; Tablero[0, 4] = new Reina(); Tablero[0, 4].Color = 'N'; Tablero[0, 3] = new Rey(); Tablero[0, 3].Color = 'N'; Tablero[7, 3] = new Reina(); Tablero[7, 3].Color = 'B'; Tablero[7, 4] = new Rey(); Tablero[7, 4].Color = 'B'; for (int f = 0; f < 8; f++) { for (int c = 0; c < 8; c++) { Tablero[f, c].Posicion = new Coordenada(f, c); } } } //Crear un array normal de piezas
//Aca empieza el bardo static void PonerPieza() { Pieza Pieza = null; //Crea una pieza y la setea como null para despues asignarle la clase que el jugador elija Console.WriteLine(); Console.WriteLine("Qué Pieza Quiere Poner? 'T'(Torre) / 'R' (Rey) / 'A' (Alfil) / 'h' (Reina) / 'C' (Caballo) / 'P' (Peon) "); char Opcion = char.Parse(Console.ReadLine()); if (Opcion == 't' || Opcion == 'T') { Pieza = new Torre(); } else if (Opcion == 'r' || Opcion == 'R') { Pieza = new Rey(); } else if (Opcion == 'a' || Opcion == 'A') { Pieza = new Alfil(); } else if (Opcion == 'h' || Opcion == 'H') { Pieza = new Reina(); } else if (Opcion == 'c' || Opcion == 'C') { Pieza = new Caballo(); } else if (Opcion == 'p' || Opcion == 'P') { Pieza = new Peon(); } //Segun la letra ingresada es una clase u otra //Lo mismo con el color Console.WriteLine("De que color? 'B' (Blanca) / 'N' (Negra)"); char OpcionC = char.Parse(Console.ReadLine()); if (OpcionC == 'b' || OpcionC == 'B') { Pieza.Color = 'B'; } else if (OpcionC == 'n' || OpcionC == 'N') { Pieza.Color = 'N'; } //La funcion ObtenerCoordenadas esta arriba comentada, la pieza creada obtiene su posicion de esta funcion Pieza.Posicion = ObtenerCoordenadas(); //Estos son los 3 casos posibles (la posicion esta ocupada por una pieza de tu color, por una de otro color o por nadie) if (Tablero[Pieza.Posicion.X, Pieza.Posicion.Y] is PiezaVacia) { Tablero[Pieza.Posicion.X, Pieza.Posicion.Y].Img = Pieza.Img; //Se muestra en el tablero donde pusiste la pieza Pieza.CalcularMovimientos(Tablero, Pieza.Posicion, MovPosiblesBlancos, MovPosiblesNegros, Pieza.Color); //Se calculan los mov de esta Console.ReadKey(); } else if (Tablero[Pieza.Posicion.X, Pieza.Posicion.Y].Color == Pieza.Color) { //No pasa nada Console.WriteLine("El Casillero esta ocupado por una pieza de tu color"); Console.ReadKey(); } else if (Tablero[Pieza.Posicion.X, Pieza.Posicion.Y].Color != Pieza.Color) { //Hace lo mismo que la primer condicion pero te tira un mensaje Console.WriteLine("Comiste una pieza de otro color"); Console.ReadKey(); Pieza.CalcularMovimientos(Tablero, Pieza.Posicion, MovPosiblesBlancos, MovPosiblesNegros, Pieza.Color); Tablero[Pieza.Posicion.X, Pieza.Posicion.Y] = Pieza; } }
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(); } }