public List <Jugada> CalcularJugadasLegales(Pieza p, int pos) { List <Jugada> rta = new List <Jugada>(); List <Jugada> rtacaza = new List <Jugada>(); List <Jugada> jugadasPosibles = new List <Jugada>(); List <Movimiento> movPosibles = new List <Movimiento>(); List <Movimiento> movPosiblesCaza = new List <Movimiento>(); movPosibles = p.DestinosPosibles(pos, 1); movPosiblesCaza = p.DestinosPosibles(pos, 2); foreach (Movimiento mov in movPosibles) { Jugada j = new Jugada(); j.AddLos_movs(mov); jugadasPosibles.Add(j); } foreach (Jugada jugp in jugadasPosibles) { foreach (Movimiento m in jugp.Los_movs) { if (EsLegal(m) && !rta.Contains(jugp)) { rta.Add(jugp); } } } jugadasPosibles.Clear(); foreach (Movimiento mov in movPosiblesCaza) { Jugada j = new Jugada(); j.Caza = true; j.AddLos_movs(mov); jugadasPosibles.Add(j); } foreach (Jugada jugp in jugadasPosibles) { foreach (Movimiento m in jugp.Los_movs) { if (EsLegalCaza(m) && !rtacaza.Contains(jugp)) { rtacaza.Add(jugp); } } } rta.AddRange(rtacaza); return(rta); }