Пример #1
0
        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));
            }
        }
Пример #2
0
 public Tank(TankFactory tankFactory)
 {
     weapon = tankFactory.CreateWeapon();
     armor  = tankFactory.CreateArmor();
     engine = tankFactory.CreateEngine();
 }
Пример #3
0
 public TankShould()
 {
     _factory = new SovietUnionTankFactory();
 }
Пример #4
0
        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!!!! ");
             * }*/
        }
Пример #5
0
 private void InitializeSingleton()
 {
     singletonInstance = this;
 }
Пример #6
0
 public void CreateContainer_IngridientWithUnknownType_NotImplementedException()
 {
     Assert.Throws <NotImplementedException>(() => TankFactory.CreateTank(new Component("abc", CoffeeMake.Interfaces.ComponentType.OTHER, false)));
 }
Пример #7
0
 public void CreateContainer_NullArgument_ArgumentNullException()
 {
     Assert.Throws <ArgumentNullException>(() => TankFactory.CreateTank(null));
 }
Пример #8
0
 public Army(TankFactory tankFactory)
 {
     _tankFactory = tankFactory;
     _random      = new Random(0);
 }