Пример #1
0
 private void Fight(Footballer player)
 {
     if (player.Skill >= Attacker.Skill)
     {
         Attacker = player;
     }
 }
Пример #2
0
        public void ClosestPlayer(List <Footballer> footballers)
        {
            var min = footballers.First().Position.Distance(Position);

            var resultFootballer = new Footballer();

            foreach (var footballer in footballers)
            {
                var footballerDistance = footballer.Position.Distance(Position);

                if (!(footballerDistance < min || footballer.Equals(Attacker) ||
                      footballerDistance > Constants.MaxDistanceToCatchBall))
                {
                    continue;
                }

                if (min < footballerDistance)
                {
                    Fight(resultFootballer);
                }

                min = footballerDistance;
                resultFootballer = footballer;
            }
        }
Пример #3
0
 public void AddFootballerToTeam(Footballer footballer)
 {
     if (Players.Count < 11)
     {
         Players.Add(footballer);
     }
     else
     {
         throw new CustomException("The team is full");
     }
 }
Пример #4
0
        private void DisqualifyFootballer(Footballer footballer)
        {
            if (FirstTeam.Title.Equals(footballer.TeamTitle))
            {
                FirstTeam.Players.Remove(footballer);
            }
            else
            {
                SecondTeam.Players.Remove(footballer);
            }

            Ball.Position = Constants.DefaultBallPosition;
        }
Пример #5
0
        public static bool AddToBreakList(Footballer footballer)
        {
            var result = BreakList.FindAll(f => f.Item1.Equals(footballer)).Count;

            if (result > 2)
            {
                BreakList.RemoveAll(p => p.Item1.Equals(footballer));
                BreakList.Add(new Tuple <Footballer, BreakingCard>(footballer, BreakingCard.Red));
                return(true);
            }

            BreakList.Add(new Tuple <Footballer, BreakingCard>(footballer, BreakingCard.Yellow));
            return(false);
        }
Пример #6
0
        public static void AddToGoalList(Footballer footballer)
        {
            var result = GoalList.Find(f => f.Item1.Equals(footballer));

            if (result != null)
            {
                var newGoal = result.Item2 + 1;

                GoalList.Remove(result);
                GoalList.Add(new Tuple <Footballer, int>(footballer, newGoal));
            }
            else
            {
                GoalList.Add(new Tuple <Footballer, int>(footballer, 1));
            }
        }
Пример #7
0
        public void MakeGoal(Footballer footballer)
        {
            if (FirstTeam.Title.Equals(footballer.TeamTitle) && Ball.BallOnGoalForSecondTeam())
            {
                Count[0]++;
                Ball.Attacker = SecondTeam.Players.Find(f => f.Role == FootballerRole.Goolkeeper);
                OnGoal?.Invoke(footballer);
            }

            if (SecondTeam.Title.Equals(footballer.TeamTitle) && Ball.BallOnGoalForFirstTeam())
            {
                Count[1]++;
                Ball.Attacker = FirstTeam.Players.Find(f => f.Role == FootballerRole.Goolkeeper);
                OnGoal?.Invoke(footballer);
            }
            Ball.Fly();
        }
Пример #8
0
        public void BreakingRules(Footballer footballer)
        {
            if (footballer.Role == FootballerRole.Goolkeeper)
            {
                return;
            }

            var firstGuardZone  = Constants.Default1GoolkeeperPosition;
            var secondGuardZone = Constants.Default2GoolkeeperPosition;

            if (!(firstGuardZone.Distance(footballer.Position) <= 2 || secondGuardZone.Distance(footballer.Position) <= 2))
            {
                return;
            }

            OnBreakRules(footballer);
            DisqualifyFootballer(footballer);
        }
Пример #9
0
 public Ball()
 {
     Attacker = new Footballer();
     Position = Constants.DefaultBallPosition;
 }