Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }