//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); } }
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); } } }
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)); }
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(); }
// 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"); } } }
public WarriorTests() { service = new WarriorService(); }