private static void LoadArmies(string path) { var forces = File.ReadAllText(path); var data = JObject.Parse(forces); var existingArmies = new HashSet <string>(); var armies = new List <Army <Tank> >(); foreach (var army in data["Armies"]) { var side = (string)army["Side"]; if (existingArmies.Contains(side)) { throw new TooManyForcesException($"Each side can contains at most 1 army, but '{side}' wants to have more"); } existingArmies.Add(side); TankFactory factory = null; switch (side) { case "SovietUnion": factory = new SovietUnionTankFactory(); break; case "UnitedStates": factory = new UnitedStatesTankFactory(); break; default: throw new ArgumentException($"There is no such side like '{side}'"); } var tanks = new Army <Tank>(factory); foreach (var tank in army["Tanks"]) { var type = (string)tank["Type"]; switch (type) { case "Reactive": tanks.AddReactiveTank(); break; case "Light": tanks.AddLightTank(); break; case "Composite": tanks.AddCompositeTank(); break; default: throw new ArgumentException($"There is no such tank type like '{type}'"); } } var extraTanks = (int)(army["RandomTanks"] ?? 0); for (var i = 0; i < extraTanks; ++i) { tanks.AddRandomTank(); } armies.Add(tanks); } foreach (var army in armies) { Console.WriteLine("---"); Console.WriteLine(string.Join(' ', army)); } }
public Tank(TankFactory tankFactory) { weapon = tankFactory.CreateWeapon(); armor = tankFactory.CreateArmor(); engine = tankFactory.CreateEngine(); }
public TankShould() { _factory = new SovietUnionTankFactory(); }
static void Main(string[] args) { //string Column1 = csvTable.Columns[0].ToString(); int shot, shot_num = 0; Console.WriteLine("Choose your tank:"); string path = @"C:\Users\Administrator\source\repos\Wot1\Wot1\TankListForChoose.txt"; string path_for_tankfac = @"C:\Users\Administrator\source\repos\Wot1\Wot1\ChoosenTanks"; string[] lines = File.ReadAllLines(path); for (int i = 0; i < lines.Length; i++) { Console.WriteLine(lines[i]); } int user_tank_num = int.Parse(Console.ReadLine()); var tank_factory = new TankFactory(); var tank_Fi = tank_factory.Create(user_tank_num, path_for_tankfac); var x = tank_Fi.GetEnumerator(); x.MoveNext(); var z = x.Current; Console.WriteLine(z.GetInfo()); /* var battle = new Battle(Tank_Fi, Tank_Sec, new ConsoleLogger()); * * battle.Start();*/ /* * Tank Tank_Fi, Tank_Sec; * * if (user_tank_num == 1) * { * Tank_Fi = new Tank("Obj.907", 325, 410, 2500); * Tank_Sec = new Tank("Chieftain FV4201 ", 331, 315, 2800); * } * else * { * Tank_Fi = new Tank("Chieftain FV4201 ", 331, 315, 2800); * Tank_Sec = new Tank("Obj.907", 325, 410, 2500); * } * * * Console.WriteLine("Your tank properties: " + Tank_Fi.GetInfo()); * Console.WriteLine("Enemy tank properties: " + Tank_Sec.GetInfo()); * Console.WriteLine("Enter 1 if you want to start BATTLE!!!!!"); * shot = int.Parse(Console.ReadLine()); * if (shot == 1) * { * while (Tank_Sec.Health > 0 && Tank_Fi.Health > 0) * { * Console.WriteLine("Enter armor's matrix number:"); * int a_arr_index = int.Parse(Console.ReadLine()); * int b_arr_index = int.Parse(Console.ReadLine()); * Console.WriteLine(Tank_Fi.MakeShot(Tank_Sec, a_arr_index, b_arr_index)); * Console.WriteLine(Tank_Fi.TakeShot(Tank_Sec)); * Console.WriteLine("Your tank Health: " + Tank_Fi.Health); * Console.WriteLine("Enemy tank Health: " + Tank_Sec.Health); * shot_num++; * * } * if (Tank_Fi.Health > 0) * { * Console.WriteLine($"VICTORY, You won this game, you did {shot_num} shot!!!! "); * * } * else Console.WriteLine($"LOSERRRR!!!! Your opponent won this battle, you did {shot_num} shot!!!! "); * }*/ }
private void InitializeSingleton() { singletonInstance = this; }
public void CreateContainer_IngridientWithUnknownType_NotImplementedException() { Assert.Throws <NotImplementedException>(() => TankFactory.CreateTank(new Component("abc", CoffeeMake.Interfaces.ComponentType.OTHER, false))); }
public void CreateContainer_NullArgument_ArgumentNullException() { Assert.Throws <ArgumentNullException>(() => TankFactory.CreateTank(null)); }
public Army(TankFactory tankFactory) { _tankFactory = tankFactory; _random = new Random(0); }