private void HitShip(BattleShip targetShip, Missile missile)
        {
            var assestprovider = new BattleshipAssestProvider(targetShip);
            IEnumerable <IGoalkeeper> goalkeepers = assestprovider.GetGoalkeepers();
            IGoalkeeper goalkeeper    = goalkeepers.FirstOrDefault();
            bool        hasGoalkeeper = goalkeeper != null;

            if (hasGoalkeeper && IsMissileCatched(goalkeeper))
            {
                missile.SetEffect(MissileEffect.HitAndCatched);
                return;
            }

            MissileEffect effect = targetShip.AcceptMissile(missile);

            missile.SetEffect(effect);
        }
        private bool IsMissileCatched(IGoalkeeper goalkeeper)
        {
            System.Tuple <int, string> challenge = Challenge.GetChallenge();

            try
            {
                int answer = goalkeeper.AcceptChallenge(challenge.Item2);

                bool catched = Chance.GetChance() &&
                               answer == challenge.Item1;

                return(catched);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }