Exemplo n.º 1
0
    static void Main(string[] args)
    {
        Supervisor _supervisor = new Supervisor();

        _supervisor.BuildQueue.Add(new BuildItem(SiteType.Barrack, CreepType.Knight));
        _supervisor.BuildQueue.Add(new BuildItem(SiteType.Tower, CreepType.None));
        _supervisor.BuildQueue.Add(new BuildItem(SiteType.Barrack, CreepType.Archer));
        _supervisor.BuildQueue.Add(new BuildItem(SiteType.Barrack, CreepType.Giant));
        _supervisor.BuildQueue.Add(new BuildItem(SiteType.Tower, CreepType.None));

        string[] inputs;
        int      numSites = int.Parse(Console.ReadLine());

        for (int i = 0; i < numSites; i++)
        {
            inputs = Console.ReadLine().Split(' ');
            int siteId = int.Parse(inputs[0]);
            int x      = int.Parse(inputs[1]);
            int y      = int.Parse(inputs[2]);
            int radius = int.Parse(inputs[3]);
            _supervisor.Sites.Add(new Site(siteId, x, y, radius));
        }

        // game loop
        while (true)
        {
            inputs = Console.ReadLine().Split(' ');
            int gold        = int.Parse(inputs[0]);
            int touchedSite = int.Parse(inputs[1]); // -1 if none
            _supervisor.Gold        = gold;
            _supervisor.TouchedSite = touchedSite;
            for (int i = 0; i < numSites; i++)
            {
                inputs = Console.ReadLine().Split(' ');
                int siteId        = int.Parse(inputs[0]);
                int ignore1       = int.Parse(inputs[1]); // used in future leagues
                int ignore2       = int.Parse(inputs[2]); // used in future leagues
                int structureType = int.Parse(inputs[3]); // -1 = No structure, 2 = Barracks
                int owner         = int.Parse(inputs[4]); // -1 = No structure, 0 = Friendly, 1 = Enemy
                int param1        = int.Parse(inputs[5]);
                int param2        = int.Parse(inputs[6]);
                (_supervisor.Sites.Where(x => x.Id == siteId).ToList())[0].Update(structureType, owner, param1, param2);
            }

            _supervisor.UpdateSiteNums();

            int numUnits = int.Parse(Console.ReadLine());
            for (int i = 0; i < numUnits; i++)
            {
                inputs = Console.ReadLine().Split(' ');
                int x        = int.Parse(inputs[0]);
                int y        = int.Parse(inputs[1]);
                int owner    = int.Parse(inputs[2]);
                int unitType = int.Parse(inputs[3]); // -1 = QUEEN, 0 = KNIGHT, 1 = ARCHER
                int health   = int.Parse(inputs[4]);
                _supervisor.Units.Add(new Unit(unitType, owner, health, x, y));
            }

            // Write an action using Console.WriteLine()
            // To debug: Console.Error.WriteLine("Debug messages...");


            // First line: A valid queen action
            // Second line: A set of training instructions
            Console.WriteLine(_supervisor.Action());
            Console.WriteLine(_supervisor.Train());

            _supervisor.Time++;
        }
    }