예제 #1
0
        //GetAttackResult
        //WarriorA, WarriorB
        public static bool GetAttackResult(WarriorService warriorService, WarriorDto warriorA, WarriorDto warriorB)
        {
            //Calculate 1 warriors attack and the other block
            double warAAttkAmt = warriorService.Attack(warriorA);
            double warBBlkAmt  = warriorService.Block(warriorB);

            // Subtract block from attack
            double dmg2WarB = warAAttkAmt - warBBlkAmt;

            // If there was damage subtract that from the health
            if (dmg2WarB > 0) // atak nie może być ujemny
            {
                //warriorB.Health -= dmg2WarB;
                warriorService.SetHealth(warriorB, (int)warriorB.Health - (int)dmg2WarB);

                // Print out info on who attacked who and for how
                // much damage
                Console.WriteLine("{0} Attacks {1} and Deals {2} Damage",
                                  warriorA.Name, //warriorA.Name,
                                  warriorB.Name, //warriorB.Name,
                                  dmg2WarB);
            }
            else
            {
                dmg2WarB = 0;

                Console.WriteLine("{0} Attacks {1} and the attack with {2} damage was blocked.",
                                  warriorA.Name, //warriorA.Name,
                                  warriorB.Name, //warriorB.Name,
                                  warAAttkAmt);
            }

            // Provide output on the change to health
            Console.WriteLine("{0} Has {1} Health\n",
                              warriorB.Name, //warriorB.Name,
                              warriorB.Health);

            // Check if the warriors health fell below
            // zero and if so print a message and send
            // a response that will end the loop
            if (warriorB.Health <= 0)
            {
                Console.WriteLine("{0} has Died and {1} is Victourious\n",
                                  warriorB.Name,  //warriorB.Name,
                                  warriorA.Name); //warriorA.Name);

                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #2
0
        static void RunTestFight()
        {
            WarriorService warriorService = new WarriorService();
            BattleService  battleService  = new BattleService();

            var warriors = warriorService.SpawnWarriors(4);
            var list2    = new List <Warrior>();

            list2.Add(warriors[2]);
            list2.Add(warriors[3]);

            battleService.CommenceBattle(warriors);
            battleService.CommenceBattle(list2);
        }
        static void Main(string[] args)
        {
            var warriorService = new WarriorService();

            var strenght = new StrenghtSpecification(warriorService);
            var health   = new HealthSpecification(warriorService);
            var fear     = new FearSpecification(warriorService);

            var availableForWar = health.And(strenght).And(fear);

            foreach (var warrior in warriorService.GetAllWarriors())
            {
                if (availableForWar.IsSatisfiedBy(warrior))
                {
                    Console.WriteLine(warrior);
                }
            }
        }
예제 #4
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            Weapon   weapon;
            IWarrior warrior;
            string   target;

            target = "target";

            //No injections
            weapon  = new Sword();
            warrior = new Samurai(weapon); //Dependency Ninja gets sword

            Console.WriteLine("no inject:" + warrior.Attack(target));

            //Ninject
            IKernel kernel;

            kernel = new StandardKernel(new WarriorModule());

            warrior = kernel.Get <IWarrior>();

            Console.WriteLine("ninject:" + warrior.Attack(target));

            //Unity Container
            IUnityContainer unityContainer;

            unityContainer = new UnityContainer();
            UnityBootstrap.RegisterTypes(unityContainer);

            warrior = unityContainer.Resolve <Samurai>();

            Console.WriteLine("unity:" + warrior.Attack(target));

            //MS ServiceProvider
            WarriorService warriorService = new WarriorService();

            weapon = (Weapon)warriorService.ServiceProvider.GetService(typeof(IWeapon));
            Console.WriteLine(weapon.Name);

            warrior = (IWarrior)warriorService.ServiceProvider.GetService(typeof(Ninja));
            Console.WriteLine("ms service:" + warrior.Attack(target));
        }
예제 #5
0
        static void Main(string[] args)
        {
            InMemoryWarriorRepository inMemoryWarriorRepository = new InMemoryWarriorRepository();

            WarriorService warriorService = new WarriorService(inMemoryWarriorRepository);

            warriorService.Create(1, "Maximus", 300, 60, 20);
            warriorService.Create(2, "Olimpus", 300, 60, 20);

            var warr1 = warriorService.Get(1);
            var warr2 = warriorService.Get(2);

            Console.WriteLine("Start the fight: {0} versus {1} \n",
                              warr1.Name,
                              warr2.Name);

            foreach (var item in inMemoryWarriorRepository.GetAll())
            {
                Console.WriteLine($"Name: {item.Name},  Health: {item.Health}, Attack: {item.AttMax}, Block: {item.BlockMax}");
            }
            Console.WriteLine("\n");

            Battle battle = new Battle();

            Battle.StartFight(warriorService, warr1, warr2);

            /*
             * var attack = warriorService.Attack(warr1);
             * Console.WriteLine($"{warr1.Name} attack with: {attack}");
             *
             * var block = warriorService.Block(warr2);
             * Console.WriteLine($"{warr2.Name} block: {block}");
             *
             * Console.WriteLine($"{warr1.Name} health: {warr1.Health}, attack: {warr1.AttMax}, block: {warr1.BlockMax}");
             * warriorService.Training(warr1);
             * Console.WriteLine($"{warr1.Name} new Health: {warr1.Health}, attack: {warr1.AttMax}, block: {warr1.BlockMax}");
             *
             */

            Console.ReadKey();
        }
예제 #6
0
        // This is a utility class so it makes sense
        // to have just static methods

        // Recieve both Warrior objects
        public static void StartFight(WarriorService warriorService, WarriorDto warrior1, WarriorDto warrior2)
        {
            //loop giving each warrior a chance to
            //attack and block each turn until
            //1 dies
            while (true)
            {
                if (GetAttackResult(warriorService, warrior1, warrior2) == true)
                {
                    Console.WriteLine("Game Over");
                    break;
                }
                if (GetAttackResult(warriorService, warrior2, warrior1) == true)
                {
                    Console.WriteLine("Game Over");
                    break;
                }

                Random random = new Random();
                if (random.Next(0, 2) == 1)
                {
                    warriorService.Training(warrior1);
                    Console.WriteLine($"{warrior1.Name} was training and his new attributes are:");
                    Console.WriteLine($"Health: {warrior1.Health}, ");
                    Console.WriteLine($"Attack: {warrior1.AttMax},");
                    Console.WriteLine($"Defense {warrior1.BlockMax} \n");
                }
                else if (random.Next(0, 2) == 1)
                {
                    warriorService.Training(warrior2);
                    Console.WriteLine($"{warrior2.Name} was training and his new attributes are:");
                    Console.WriteLine($"Health: {warrior2.Health}, ");
                    Console.WriteLine($"Attack: {warrior2.AttMax},");
                    Console.WriteLine($"Defense {warrior2.BlockMax} \n");
                }
            }
        }
예제 #7
0
 public WarriorTests()
 {
     service = new WarriorService();
 }