public static bool needAttack(Draught d, List <Draught> list) { List <Position> listPos = d.getAttackMoves(); foreach (Draught dr in list) { foreach (Position p in listPos) { if (dr != d && dr.isBlack() != d.isBlack() && dr.isMyPosition(p) && canAttack(d, p, list)) { return(true); } } } return(false); }
public static bool canAttack(Draught from, Position attacked, List <Draught> list) { Position to = new Position((from.getPosition().x - attacked.x > 0 ? attacked.x - 1 : attacked.x + 1), (from.getPosition().y - attacked.y > 0 ? attacked.y - 1 : attacked.y + 1)); if (to.x > 7 || to.x < 0 || to.y > 7 || to.y < 0) { return(false); } List <Position> pos = from.getRoutTo(to); if (pos == null) { return(false); } bool isFind = false; foreach (Draught d in list) { if (d.isMyPosition(attacked) && d.isBlack() != from.isBlack()) { isFind = true; } } if (!isFind) { return(false); } foreach (Draught d in list) { foreach (Position p in pos) { if (!d.isMyPosition(attacked) && d.isMyPosition(p)) { return(false); } } } return(true); }