/// <summary> /// /// </summary> /// <param name="p"></param> /// <param name="m"></param> /// <returns></returns> private List <IndexBundle> PossibleMovementHelper(Piece p, Movement m) { List <IndexBundle> bundle = new List <IndexBundle>(); int initRow = p.Row; int initCol = p.Column; int numer = m.Numerator; int denom = m.Denominator; List <IConstraint> cons = m.Cons; for (int i = 1; i <= m.NumTimes; i++) { int tNum = numer * i; int tDen = denom * i; bool flag = true; foreach (IConstraint c in cons) { try { if (!c.ConstraintSatisfied (p, initRow + tNum, initCol + tDen, Board)) { flag = false; break; } } catch (Exception) { flag = false; } } if (flag) { bundle.Add(new IndexBundle(initRow + tNum, initCol + tDen)); } } p.AddIndices(bundle); return(bundle); }