-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProgram.cs
More file actions
69 lines (63 loc) · 3.97 KB
/
Copy pathProgram.cs
File metadata and controls
69 lines (63 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System;
using Pudge;
using Pudge.Player;
using System.IO;
using Geometry;
using Newtonsoft.Json;
namespace PudgeClient
{
class Program
{
const string CvarcTag = "69a2c91f-a99f-46b7-b5de-f439becd3190";
// Пример визуального отображения данных с сенсоров при отладке.
// Если какая-то информация кажется вам лишней, можете закомментировать что-нибудь.
static void Print(PudgeSensorsData data)
{
/*Console.WriteLine("---------------------------------");
if (data.IsDead)
{
// Правильное обращение со смертью.
Console.WriteLine("Ooops, i'm dead :(");
return;
}
Console.WriteLine("I'm here: " + data.SelfLocation);
Console.WriteLine("My score now: {0}", data.SelfScores);*/
Console.WriteLine("Current time: {0:F}", data.WorldTime);
/*foreach (var rune in data.Map.Runes)
Console.WriteLine("Rune! Type: {0}, Size = {1}, Location: {2}", rune.Type, rune.Size, rune.Location);
foreach (var heroData in data.Map.Heroes)
Console.WriteLine("Enemy! Type: {0}, Location: {1}, Angle: {2:F}", heroData.Type, heroData.Location, heroData.Angle);
foreach (var eventData in data.Events)
Console.WriteLine("I'm under effect: {0}, Duration: {1}", eventData.Event,
eventData.Duration - (data.WorldTime - eventData.Start));
Console.WriteLine("---------------------------------");
Console.WriteLine();*/
}
static void Main(string[] args)
{
if (args.Length == 0)
args = new[] { "87.224.245.130", "14001" };
//args = new[] {"127.0.0.1", "14000"};
var ip = args[0];
var port = int.Parse(args[1]);
// Каждую неделю клиент будет новый. Соотетственно Level1, Level2 и Level3.
var client = new PudgeClientLevel3();
// У этого метода так же есть необязательные аргументы:
// timeLimit -- время в секундах, сколько будет идти матч (по умолчанию 90)
// operationalTimeLimit -- время в секундах, отображающее ваш лимит на операции в сумме за всю игру
// По умолчанию -- 1000. На турнире будет использоваться значение 5. Подробнее про это можно прочитать в правилах.
// isOnLeftSide -- предпочитаемая сторона. Принимается во внимание во время отладки. По умолчанию true.
// seed -- источник энтропии для случайного появления рун. По умолчанию -- 0.
// При изменении руны будут появляться в другом порядке
// speedUp -- ускорение отладки в два раза. Может вызывать снижение FPS на слабых машинах
var graph = JsonConvert.DeserializeObject<Graph>(string.Join("", File.ReadAllLines("graph.json")));
graph.runes.Remove(graph.TryGetRune(new Point(-130, 130)));
graph.runes.Remove(graph.TryGetRune(new Point(130, -130)));
var data = client.Configurate(ip, port, CvarcTag, operationalTimeLimit : 5);
client.SensorDataReceived += Print;
var mover = new Mover(graph, data, client);
mover.Run(new SimpleSmartStrategy(data, graph));
client.Exit();
}
}
}