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(); }
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(); } }