public void CalcularMovs(Coordenada PosicionInicio, Tablero Tablero, int Orientacion, int Lado) { if (PosicionInicio.Y + 1 <= Tablero.Ancho - 1 && PosicionInicio.X + Orientacion <= Tablero.Alto && !Final) { Coordenada Movimiento = new Coordenada(PosicionInicio.X + Orientacion, PosicionInicio.Y + Lado); if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != Icono && Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != '·') { if (Tablero.Grilla[Movimiento.X + Orientacion, Movimiento.Y + Lado].Icono == '·') { Coordenada Destino = new Coordenada(Movimiento.X + Orientacion, Movimiento.Y + Lado); Capturadas.Add(Tablero.Grilla[Movimiento.X, Movimiento.Y]); Destino.PiezasComidas = Capturadas; PosiblesMovimientos.Add(Destino); Capturo = true; CalcularMovs(Destino, Tablero, Orientacion, Lado); } } } }
public override List <Coordenada> CalcularMovimientos(Coordenada PosicionInicio, Tablero Tablero) { for (int i = 1; i < Tablero.Alto; i++) { //Abajo Derecha try { if (Tablero.Grilla[PosicionInicial.X + i, PosicionInicial.Y + i].Icono == '·') { Coordenada Movimiento = new Coordenada(PosicionInicial.X + i, PosicionInicial.Y + i); PosiblesMovimientos.Add(Movimiento); } else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono == Icono) { break; } else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono != Icono) { Coordenada Inicio = new Coordenada(PosicionInicio.X + i - 1, PosicionInicio.Y + i - 1); CalcularMovs(Inicio, Tablero, 1, 1); break; } } catch (IndexOutOfRangeException) { } // Abajo Izquierda try { if (Tablero.Grilla[PosicionInicial.X + i, PosicionInicial.Y - i].Icono == '·') { Coordenada Movimiento = new Coordenada(PosicionInicial.X + i, PosicionInicial.Y - i); PosiblesMovimientos.Add(Movimiento); } else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono == Icono) { break; } else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono != Icono) { Coordenada Inicio = new Coordenada(PosicionInicio.X + i - 1, PosicionInicio.Y - i + 1); CalcularMovs(Inicio, Tablero, 1, -1); break; } } catch (IndexOutOfRangeException) { } // Arriba Derecha try { if (Tablero.Grilla[PosicionInicial.X - i, PosicionInicial.Y + i].Icono == '·') { Coordenada Movimiento = new Coordenada(PosicionInicial.X - i, PosicionInicial.Y + i); PosiblesMovimientos.Add(Movimiento); } else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono == Icono) { break; } else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono != Icono) { Coordenada Inicio = new Coordenada(PosicionInicio.X - i + 1, PosicionInicio.Y + i - 1); CalcularMovs(Inicio, Tablero, -1, 1); break; } } catch (IndexOutOfRangeException) { } // Arriba Izquierda try { if (Tablero.Grilla[PosicionInicial.X - i, PosicionInicial.Y - i].Icono == '·') { Coordenada Movimiento = new Coordenada(PosicionInicial.X - i, PosicionInicial.Y - i); PosiblesMovimientos.Add(Movimiento); } else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono == Icono) { break; } else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono != Icono) { Coordenada Inicio = new Coordenada(PosicionInicio.X - i + 1, PosicionInicio.Y - i + 1); CalcularMovs(Inicio, Tablero, -1, -1); break; } } catch (IndexOutOfRangeException) { } } return(PosiblesMovimientos); }
public override List <Coordenada> CalcularMovimientos(Coordenada PosicionInicio, Tablero Tablero) { if (Icono == 'O') { Orientacion = -1; } else if (Icono == 'X') { Orientacion = 1; } //------------------------------------------------------------------------------------------------------------------------------------------------ //LADO DERECHO if (PosicionInicio.Y + 1 <= Tablero.Ancho - 1 && PosicionInicio.X + Orientacion <= Tablero.Alto && !Final) { Coordenada Movimiento = new Coordenada(PosicionInicio.X + Orientacion, PosicionInicio.Y + 1); if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono == '·' && !Capturo) { PosiblesMovimientos.Add(Movimiento); } else if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != Icono && Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != '·') { if (Tablero.Grilla[Movimiento.X + Orientacion, Movimiento.Y + 1].Icono == '·') { Coordenada Destino = new Coordenada(Movimiento.X + Orientacion, Movimiento.Y + 1); Capturadas.Add(Tablero.Grilla[Movimiento.X, Movimiento.Y]); Destino.PiezasComidas = Capturadas; PosiblesMovimientos.Add(Destino); Capturo = true; CalcularMovimientos(Destino, Tablero); } } } //------------------------------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------------------------------ //LADO IZQUIERDO if (PosicionInicio.Y - 1 >= 0 && PosicionInicio.X + Orientacion >= 0 && !Final) { Coordenada Movimiento = new Coordenada(PosicionInicio.X + Orientacion, PosicionInicio.Y - 1); if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono == '·' && !Capturo) { PosiblesMovimientos.Add(Movimiento); } else if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != Icono && Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != '·') { if (Tablero.Grilla[Movimiento.X + Orientacion, Movimiento.Y - 1].Icono == '·') { Coordenada Destino = new Coordenada(Movimiento.X + Orientacion, Movimiento.Y - 1); Capturadas.Add(Tablero.Grilla[Movimiento.X, Movimiento.Y]); Destino.PiezasComidas = Capturadas; PosiblesMovimientos.Add(Destino); Capturo = true; CalcularMovimientos(Destino, Tablero); } } } Final = true; return(PosiblesMovimientos); }