예제 #1
0
        public static void Shoot(Soldier shooter, Soldier target)
        {
            const float chanceToHit = 50;
            var         hit         = _random.Next(100);

            if (hit > chanceToHit)
            {
                target.HP -= 50;
                if (target.HP <= 0)
                {
                    Console.WriteLine($"{target.Name}, {target.Age} years old met his destiny");
                    shooter.XP += 100;
                }
                else
                {
                    shooter.XP += 10;
                }
            }

            if (shooter.XP >= shooter.XPForPromotion)
            {
                shooter.XP -= shooter.XPForPromotion;

                if (shooter is Leutenant)
                {
                    shooter = new Commander()
                    {
                        Age            = shooter.Age,
                        Height         = shooter.Height,
                        Name           = shooter.Name,
                        HP             = shooter.HP,
                        Weight         = shooter.Weight,
                        XP             = shooter.XP,
                        XPForPromotion = 1000
                    };
                }
                else if (shooter is Soldier)
                {
                    shooter = new Leutenant()
                    {
                        Age            = shooter.Age,
                        Height         = shooter.Height,
                        Name           = shooter.Name,
                        HP             = shooter.HP,
                        Weight         = shooter.Weight,
                        XP             = shooter.XP,
                        XPForPromotion = 1000
                    };
                }
            }

            if (shooter is Commander)
            {
                Console.WriteLine("War is over!");
                // Clear reserve.
                reserver = new List <Soldier>();
            }
        }
예제 #2
0
        private static void GenericCollectionPrintTest()
        {
            var cleaner     = new Cleaner("Tom", new DateTime(1994, 11, 20), 600);
            var firefighter = new Firefighter("Jack", new DateTime(1987, 5, 5), 1000);
            var leutenant   = new Leutenant("Igor", new DateTime(1947, 5, 5), 2000);
            var general     = new General("Daniel", new DateTime(1958, 6, 2), 3060);

            Profession[] profesions = { cleaner, firefighter, leutenant, general };
            profesions.Print();
        }
예제 #3
0
        public void SoldierExperiment()
        {
            var soldier1 = new Recruit("Michael", new DateTime(1994, 3, 17), 450);
            var soldier2 = new Leutenant("Michael", new DateTime(1994, 3, 17), 450);
            var soldier3 = new General("Michael", new DateTime(1994, 3, 17), 450);
            var soldier4 = new Recruit("Michael", new DateTime(1994, 3, 17), 450);
            var soldier5 = new Recruit("Michael", new DateTime(1994, 3, 17), 450);

            Soldier[] soldiers = { soldier1, soldier2, soldier3, soldier3, soldier4, soldier5 };

            foreach (var soldier in soldiers)
            {
                soldier.Promote();
            }
        }
예제 #4
0
        private ISoldier GetLeutenant(string id, string firstName, string lastName, decimal salary, string[] partitions)
        {
            Leutenant leutenant = new Leutenant(id, firstName, lastName, salary);


            for (int i = 5; i < partitions.Length; i++)
            {
                string currentId      = partitions[i];
                var    currentPrivate = soldiers.FirstOrDefault(p => p.Id == currentId);

                leutenant.Privates.Add((IPrivate)currentPrivate);
            }

            return(leutenant);
        }