Exemple #1
0
 public void Think(int turn, int maxTurn, int player, GameField field, ICommander commander)
 {
     if (field.GetPrepareResource(plan.Excavator, player, true) >= 4 && field[plan.Excavator].Terrain == Terrain.Wasteland)
     {
         disposition.AddBuildOrder(1000, plan.Excavator, Terrain.Excavator);
         disposition.AddMoveOrder(100, plan.Excavator, GameField.GetNeedRobot(Terrain.Excavator));
     }
     foreach (Point town in plan.Town)
     {
         if (field.GetPrepareResource(town, player, true) < 9) continue;
         disposition.AddBuildOrder(1000, town, Terrain.Town);
         disposition.AddMoveOrder(100, town, GameField.GetNeedRobot(Terrain.Town));
     }
     DistanceMap distance = new DistanceMap(field, player, InitialPoint);
     BuildPriority priority = new BuildPriority(field, player, InitialPoint, 99);
     foreach (Point point in field.Iterator())
     {
         if (field.GetPrepareResource(point, player, true) < 4) continue;
         if (!field.IsAdjoinTerritory(point, player)) continue;
         if (point == new Point { X = 6, Y = 6 }) continue;
         Terrain building;
         switch(field[point].Terrain)
         {
             case Terrain.Wasteland: building = Terrain.House; break;
             case Terrain.Hole: building = Terrain.Bridge; break;
             default: continue;
         }
         disposition.AddBuildOrder(priority[point] * 10, point, building);
         disposition.AddMoveOrder(priority[point], point, GameField.GetNeedRobot(building));
     }
     foreach (OrderBuild build in disposition.EnumerateOrder<OrderBuild>())
     {
         disposition.AddSecureResource(build.Priority / 10 - 1, build.Point, player, field);
     }
     disposition.AddSecureGround(150, 100, player, field);
     disposition.AddKamikaze(0, player, field);
     disposition.Dispose(field, commander);
 }