Exemple #1
0
        private List <IUnit> GetFirstLine(IArmy army)
        {
            var firstLine  = new List <IUnit>();
            var unitsInRow = Math.Min(GameStrategy.SizeOfRow, army.Count());

            for (int i = 0; i < unitsInRow; i++)
            {
                firstLine.Add(army[army.Count() - 1 - i]);
            }
            return(firstLine);
        }
Exemple #2
0
        private List <ISpecialAction> GetSpecialUnitsInRow(IArmy army, int Column)
        {
            var specialActions = new List <ISpecialAction>();

            for (int i = army.Count() - Column - 1; i >= 0; i -= GameStrategy.SizeOfRow)
            {
                if (army[i] is ISpecialAction)
                {
                    specialActions.Add(army[i] as ISpecialAction);
                }
            }
            return(specialActions);
        }
Exemple #3
0
        private void Fight(IArmy firstArmy, IArmy secondArmy)
        {
            if (EndGame())
            {
                return;
            }

            List <IUnit> firstLineFirstArmy  = GetFirstLine(firstArmy);
            List <IUnit> firstLineSecondArmy = GetFirstLine(secondArmy);

            var minPossiblePairs = Math.Min(GameStrategy.SizeOfRow, Math.Min(firstArmy.Count(), secondArmy.Count())); //Сражаются бойцы, у которых есть противник

            for (int i = 0; i < minPossiblePairs; i++)
            {
                IUnit Attecker = firstLineFirstArmy[i];
                IUnit Defender = firstLineSecondArmy[i];
                StepInfo += $"\n\nАрмия {firstArmy.ArmyName} - {Attecker.GetInfo()}\n\n\t\t\t|--|--СРАЖАЕТСЯ С--|--|\n\nАрмией {secondArmy.ArmyName} - {Defender.GetInfo()}\n";
                IUnit attackedUnit = Attecker.Fight(Defender);
                if (attackedUnit == null)
                {
                    StepInfo += $"\n\t\t\t -------ИТОГ-------\n\nАрмия {secondArmy.ArmyName} АТТАКОВАНА! Пострадал {Defender.GetInfo()}!\n";
                }
                else
                {
                    StepInfo += $"\n\t\t\t -------ИТОГ-------\n\nВ армии {secondArmy.ArmyName} СМЕРТЬ! Погиб {Defender.Name}!\n";
                    if (Subscribed == true)
                    {
                        StepInfo += $"\n\t\t\t{secondArmy.NotifyAboutDeath()}\n";
                    }
                    secondArmy.Remove(attackedUnit);
                }
            }
            if (EndGame())
            {
                return;
            }
        }