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(); } }
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); }
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); }
public static void Comer(Pieza pieza, List <Pieza> listPieza) { listPieza.Remove(pieza); }