Beispiel #1
0
        /// <summary>
        /// Armies that are stuck serve no purpose. We need to move them away where they can be of any use.
        /// </summary>
        /// <param name="stuckArmies">The stuck armies.</param>
        public void CalculateForStuckArmies(IEnumerable <Region> stuckArmies)
        {
            if (stuckArmies.Any())
            {
                foreach (var stuckArmie in stuckArmies)
                {
                    //Basic path finding to move away
                    for (int degree = 1; degree < 6; degree++)
                    {
                        var escapeRoute = GetNthDegreeNeighbours(stuckArmie, degree).FirstOrDefault();
                        if (escapeRoute != null)
                        {
                            var transfer = new ArmyTransfer
                            {
                                SourceRegion = stuckArmie,
                                TargetRegion = escapeRoute,
                                Armies       = GetRequiredArmies(stuckArmie, escapeRoute)
                            };

                            Transfers.Add(transfer);
                            break;
                        }
                    }
                }
            }
        }
Beispiel #2
0
        private bool AddCurrentPairToTransferList(Region sourceRegion, Region targetRegion, int nbrOfArmies)
        {
            if (sourceRegion == null || targetRegion == null)
            {
                return(false);
            }

            if (sourceRegion.NbrOfArmies > 3 || (sourceRegion.IsOccupiedBy(PlayerType.Me) && targetRegion.IsOccupiedBy(PlayerType.Me) && sourceRegion.NbrOfArmies > 1))
            {
                var transfer = new ArmyTransfer
                {
                    SourceRegion = sourceRegion,
                    TargetRegion = targetRegion,
                    Armies       = nbrOfArmies
                };

                Transfers.Add(transfer);
                UpdateRegion(sourceRegion.ID, Configuration.Current.GetMyBotName(), sourceRegion.NbrOfArmies - nbrOfArmies);

                return(true);
            }

            return(false);
        }