コード例 #1
0
 public string Upgrade(int upgradeType)
 {
     if (PlayerInfo.Position != PlayerInfo.HouseLocation)
     {
         return(MovementActions.MoveTo(GameMap, PlayerInfo.HouseLocation - PlayerInfo.Position));
     }
     else
     {
         return(AIHelper.CreateUpgradeAction((UpgradeType)upgradeType));
     }
 }
コード例 #2
0
            /// <summary>
            /// Move to rock and if close enough, collect
            /// </summary>
            public static string MoveToRock(Map map)
            {
                Point position = new Point(2000, 2000);

                if (PlayerInfo.CarriedResources == PlayerInfo.CarryingCapacity)
                {
                    return(MovementActions.MoveTo(map, PlayerInfo.HouseLocation - PlayerInfo.Position));
                }
                else
                {
                    foreach (Tile t in map.GetVisibleTiles())
                    {
                        if (t.TileType == TileContent.Resource)
                        {
                            if (Math.Pow(t.Position.X - PlayerInfo.Position.X, 2) + Math.Pow(t.Position.Y - PlayerInfo.Position.Y, 2)
                                < Math.Pow(position.X - PlayerInfo.Position.X, 2) + Math.Pow(position.Y - PlayerInfo.Position.Y, 2))
                            {
                                position = new Point(t.Position.X, t.Position.Y);
                            }
                        }
                    }
                    double distance = Math.Sqrt(Math.Pow((position.X - PlayerInfo.Position.X), 2) + (Math.Pow((position.Y - PlayerInfo.Position.Y), 2)));
                    if (distance > 1)
                    {
                        if (map.GetTileAt(PlayerInfo.Position.X + 1, PlayerInfo.Position.Y) == TileContent.Wall)
                        {
                            return(AIHelper.CreateMeleeAttackAction(new Point(1, 0)));
                        }
                        else if (map.GetTileAt(PlayerInfo.Position.X - 1, PlayerInfo.Position.Y) == TileContent.Wall)
                        {
                            return(AIHelper.CreateMeleeAttackAction(new Point(-1, 0)));
                        }
                        else if (map.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y + 1) == TileContent.Wall)
                        {
                            return(AIHelper.CreateMeleeAttackAction(new Point(0, 1)));
                        }
                        else if (map.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y - 1) == TileContent.Wall)
                        {
                            return(AIHelper.CreateMeleeAttackAction(new Point(0, -1)));
                        }
                        return(MovementActions.MoveTo(map, position - PlayerInfo.Position));
                    }
                    else
                    {
                        return(AIHelper.CreateCollectAction(position - PlayerInfo.Position));
                    }
                }
            }
コード例 #3
0
 public string Rechercher()
 {
     if (GameMap.GetTileAt(PlayerInfo.Position.X + 1, PlayerInfo.Position.Y) == TileContent.Wall)
     {
         return(AIHelper.CreateMeleeAttackAction(new Point(1, 0)));
     }
     else if (GameMap.GetTileAt(PlayerInfo.Position.X - 1, PlayerInfo.Position.Y) == TileContent.Wall)
     {
         return(AIHelper.CreateMeleeAttackAction(new Point(-1, 0)));
     }
     else if (GameMap.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y + 1) == TileContent.Wall)
     {
         return(AIHelper.CreateMeleeAttackAction(new Point(0, 1)));
     }
     else if (GameMap.GetTileAt(PlayerInfo.Position.X, PlayerInfo.Position.Y - 1) == TileContent.Wall)
     {
         return(AIHelper.CreateMeleeAttackAction(new Point(0, -1)));
     }
     return(MovementActions.MoveTo(GameMap, PlayerInfo.HouseLocation - PlayerInfo.Position));
 }