public PudgeIntellect(PudgeClient <PudgeSensorsData> client, IEnumerable <Point> trees)
        {
            Client = client;
            Client.SensorDataReceived += data => this.data = data;
            Client.SensorDataReceived += PrintData;

            Trees          = trees.ToArray();
            Graph          = BuildWaypointsGraph().ToArray();
            RunesUsedCount = new Dictionary <Point, int>();
            InitRunesUsedCount();
        }
示例#2
0
        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 PudgeClient();

            // Для удобства, можно подписать свой метод на обработку всех входящих данных с сенсоров.
            // С этого момента любое действие приведет к отображению в консоли всех данных
            client.OnSensorDataReceived += Print;
            // Время от времени сервер может отправлять вам информационные сообщения. На каждое сообщение произойдет событие OnInfo
            client.OnInfo += OnInfo;

            // У метода Configurate так же есть необязательные аргументы:
            // timeLimit -- время в секундах, сколько будет идти матч (по умолчанию 90)
            // operationalTimeLimit -- время в секундах, отображающее ваш лимит на операции в сумме за всю игру
            // По умолчанию -- 1000. На турнире будет использоваться значение 5. Подробнее про это можно прочитать в правилах.
            // isOnLeftSide -- предпочитаемая сторона. Принимается во внимание во время отладки. По умолчанию true.
            // seed -- источник энтропии для случайного появления рун. По умолчанию -- 0.
            // При изменении руны будут появляться в другом порядке
            // speedUp -- ускорение отладки в два раза. Может вызывать снижение FPS на слабых машинах
            var sensorData = client.Configurate(ip, port, CvarcTag);

            // Пудж узнает о всех событиях, происходящих в мире, с помощью сенсоров.
            // Для передачи и представления данных с сенсоров служат объекты класса PudgeSensorsData.
            // Каждое действие возвращает новые данные с сенсоров.
            // Мы подписались на обработку событий, поэтому обрабатывать отдельно каждый экземпляр нет необходимости

            // Угол поворота указывается в градусах, против часовой стрелки.
            // Для поворота по часовой стрелке используйте отрицательные значения.
            client.Rotate(-45);

            client.Move(60);
            client.Wait(0.1);

            // Так можно хукать.
            sensorData = client.Hook();

            // Так дожидаемся, пока хук вернется к нам
            while (sensorData != null && sensorData.Events.Any(s => s.Event == PudgeEvent.HookThrown))
            {
                sensorData = client.Wait(0.1);
            }

            // Пример длинного движения. Move(100) лучше не писать. Мало ли что произойдет за это время ;)
            for (int i = 0; i < 5; i++)
            {
                client.Move(15);
            }
            client.Wait(1);

            // вот так телепортироваться
            client.Blink(0, 0);
            // вот так ставить варды :)
            client.CreateWard();

            client.Rotate(180);
            client.Move(10);
            client.Wait(2);

            // Корректно завершаем работу
            client.Exit();
        }
    }