Example #1
0
        public MoveList filterMovesThatBlockAttack(MoveList moves, Location blockedAttack)
        {
            if (moves.Count == 0)
            {
                return(moves);
            }


            MoveList filtered = new MoveList();

            foreach (Move move in moves)
            {
                GameBoard copy = this.Copy();
                copy.movePiece(move);

                IList <AbstractPiece> attackers = copy.getAttackers(moves[0].startLocation, getPiece(moves[0].startLocation).color);

                bool allowsAttack = false;
                foreach (AbstractPiece attacker in attackers)
                {
                    MoveList attackerMoves = copy.getMoves(attacker);
                    if (attackerMoves.ContainsAttacked(blockedAttack))
                    {
                        allowsAttack = true;
                        break;
                    }
                }
                if (!allowsAttack)
                {
                    filtered.Add(move);
                }
            }

            return(filtered);
        }