Exemple #1
0
        private KeyValuePair <EContinent, double> GetBiggestOwnedContinentWithRemainingEnemyCountries()
        {
            var continents = gameInformation.GetAllCountries().Select(x => x.Continent).Distinct();

            var numberOfCountriesPerContinent = new Dictionary <EContinent, int>();

            foreach (var continent in continents)
            {
                numberOfCountriesPerContinent.Add(continent,
                                                  gameInformation.GetAllCountries().Count(x => x.Continent == continent));
            }

            var continentsWithOwnPresence =
                gameInformation.GetAllCountriesOwnedByPlayer(this).Select(x => x.Continent).Distinct();
            var numberOfOwnCountriesPerContinent = new Dictionary <EContinent, int>();

            foreach (var continent in continentsWithOwnPresence)
            {
                var currentNumber =
                    gameInformation.GetAllCountriesOwnedByPlayer(this).Count(x => x.Continent == continent);
                if (currentNumber == numberOfCountriesPerContinent[continent])
                {
                    continue;
                }
                numberOfOwnCountriesPerContinent.Add(continent, currentNumber);
            }

            var percentageOfOwnCountriesInContinent = new Dictionary <EContinent, double>();

            foreach (var continent in continentsWithOwnPresence)
            {
                percentageOfOwnCountriesInContinent.Add(continent,
                                                        numberOfOwnCountriesPerContinent.Single(x => x.Key == continent)
                                                        .Value /
                                                        (double)
                                                        numberOfCountriesPerContinent.Single(x => x.Key == continent)
                                                        .Value);
            }

            var biggestContinent = percentageOfOwnCountriesInContinent.First();

            foreach (var currentpercentage in percentageOfOwnCountriesInContinent)
            {
                if (currentpercentage.Value > percentageOfOwnCountriesInContinent[biggestContinent.Key])
                {
                    biggestContinent = currentpercentage;
                }
            }

            return(biggestContinent);
        }
Exemple #2
0
 public static IEnumerable <EContinent> GetContinentsOwnedBy(this GameInformation info, IPlayer player)
 {
     return(from c in info.GetAllCountries()
            group c by c.Continent
            into grp
            where grp.All(x => x.Owner == player)
            select grp.Key);
 }