public void FuzzyArmies_CheckArmy(Location location, RealisticArmy expectedArmy)
        {
            client.Move(Direction.Down);
            client.Move(Direction.RightDown);
            client.Move(Direction.RightUp);
            client.Move(Direction.RightDown);
            var data = client.Move(Direction.RightUp);

            var actualArmy = data.Map.Objects.Single(x => x.Location.ToLocation() == location).NeutralArmy;

            actualArmy.Army.ShouldAllBeEquivalentTo(expectedArmy);
        }
        public static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                args = new[] { "127.0.0.1", "18700" }
            }
            ;
            var ip   = args[0];
            var port = int.Parse(args[1]);

            var client = new HommFinalLevelClient();

            client.OnSensorDataReceived += Print;
            client.OnInfo += OnInfo;

            var sensorData = client.Configurate(
                ip, port, CvarcTag,

                timeLimit: 90,              // Продолжительность матча в секундах (исключая время, которое "думает" ваша программа).

                operationalTimeLimit: 20,   // Суммарное время в секундах, которое разрешается "думать" вашей программе.
                                            // Вы можете увеличить это время для отладки, чтобы ваш клиент не был отключен,
                                            // пока вы разглядываете программу в режиме дебаггинга.

                seed: 0,                    // Seed карты. Используйте этот параметр, чтобы получать одну и ту же карту и отлаживаться на ней.
                                            // Иногда меняйте этот параметр, потому что ваш код должен хорошо работать на любой карте.

                spectacularView: true,      // Вы можете отключить графон, заменив параметр на false.

                debugMap: false,            // Вы можете использовать отладочную простую карту, чтобы лучше понять, как устроен игоровой мир.

                isOnLeftSide: true          // Вы можете указать, с какой стороны будет находиться замок героя при игре на втором уровне.
                                            // Помните, что на сервере выбор стороны осуществляется случайным образом, поэтому ваш код
                                            // должен работать одинаково хорошо в обоих случаях.
                );

            var path = new[] { Direction.RightDown, Direction.RightUp, Direction.RightDown, Direction.RightUp, Direction.LeftDown, Direction.Down, Direction.RightDown, Direction.RightDown, Direction.RightUp };

            sensorData = client.HireUnits(1);
            foreach (var e in path)
            {
                sensorData = client.Move(e);
            }
            sensorData = client.Move(Direction.RightDown);
            client.Exit();
        }